窗口 – 如何在窗口上绘制图像?

前端之家收集整理的这篇文章主要介绍了窗口 – 如何在窗口上绘制图像?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Windows Vista中的C中使用VS2005创建了一个带有createwindow()api的窗口

我的要求是在该窗口上绘制一个图像(任何格式).
我在这个应用程序中没有使用任何MFC.

请帮我一些代码片段.

不完全确定你的问题是什么:在窗体上画一个位图,或者你想知道如何使用各种图像格式,或者两者兼而有之.无论如何,下面是一个例子,您可以如何加载位图并在表单上绘制它:
HBITMAP hBitmap = NULL;

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    int wmId,wmEvent;

    switch (message)
    {
<...>

    case WM_CREATE:
        hBitmap = (HBITMAP)LoadImage(hInst,L"c:\\test.bmp",IMAGE_BITMAP,LR_LOADFROMFILE);
        break;
    case WM_PAINT:
        PAINTSTRUCT     ps;
        HDC             hdc;
        BITMAP          bitmap;
        HDC             hdcMem;
        HGdioBJ         oldBitmap;

        hdc = BeginPaint(hWnd,&ps);

        hdcMem = CreateCompatibleDC(hdc);
        oldBitmap = SelectObject(hdcMem,hBitmap);

        GetObject(hBitmap,sizeof(bitmap),&bitmap);
        BitBlt(hdc,bitmap.bmWidth,bitmap.bmHeight,hdcMem,SRCCOPY);

        SelectObject(hdcMem,oldBitmap);
        DeleteDC(hdcMem);

        EndPaint(hWnd,&ps);
        break;
    case WM_DESTROY:
        DeleteObject(hBitmap);
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd,message,wParam,lParam);
    }
    return 0;
}

LoadImage加载图标,光标,动画光标或位图.详情here

对于使用各种图像格式,您可以使用Windows映像组件(参见IWICBitmapDecoder)或代码从这里Loading JPEG and GIF pictures或第三方工具,如FreeImageLeadTools

希望这有帮助,问候

原文链接:https://www.f2er.com/windows/363775.html

猜你在找的Windows相关文章