以下是一个示例代码,用于读取 res 中的 5 张 bmp 图片,计算位图的宽度和高度,并加载出来画在规定坐标上,并对使用的变量进行回收处理:

#include <afxres.h>

void LoadAndDrawBitmap(int x, int y, HINSTANCE hInstance, int resourceId) {
    HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(resourceId));
    if (hBitmap != NULL) {
        BITMAP bmp;
        GetObject(hBitmap, sizeof(BITMAP), &bmp);
        int width = bmp.bmWidth;
        int height = bmp.bmHeight;

        HDC hDC = GetDC(NULL);
        HDC hMemDC = CreateCompatibleDC(hDC);
        HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
        BitBlt(hDC, x, y, width, height, hMemDC, 0, 0, SRCCOPY);

        SelectObject(hMemDC, hOldBitmap);
        DeleteDC(hMemDC);
        ReleaseDC(NULL, hDC);
        DeleteObject(hBitmap);
    }
}

int main() {
    HINSTANCE hInstance = AfxGetInstanceHandle();

    LoadAndDrawBitmap(0, 0, hInstance, IDB_BITMAP1); // 加载并画第一个位图
    LoadAndDrawBitmap(100, 0, hInstance, IDB_BITMAP2); // 加载并画第二个位图
    LoadAndDrawBitmap(200, 0, hInstance, IDB_BITMAP3); // 加载并画第三个位图
    LoadAndDrawBitmap(300, 0, hInstance, IDB_BITMAP4); // 加载并画第四个位图
    LoadAndDrawBitmap(400, 0, hInstance, IDB_BITMAP5); // 加载并画第五个位图

    return 0;
}

在上面的示例代码中,我们使用了LoadBitmap函数来加载 bmp 位图资源,并使用GetObject函数获取位图的宽度和高度。然后,我们创建了一个兼容设备上下文(hMemDC),并将位图对象(hBitmap)选入该上下文中。最后,我们使用BitBlt函数将位图绘制到屏幕上。

在使用完位图和设备上下文后,我们需要进行变量的回收处理。这里我们使用了SelectObject函数将原来的位图对象选回到设备上下文中,并使用DeleteDC函数删除设备上下文。最后,我们使用DeleteObject函数删除位图对象。

请注意,上述示例代码中的IDB_BITMAP1IDB_BITMAP2等是位图资源的 ID,需要根据实际情况进行修改。另外,这里的代码是在 MFC 环境下编写的,如果你的项目不是 MFC 项目,可能需要做一些调整。

MFC 加载并绘制 RES 资源中的 BMP 图片

原文地址: https://www.cveoy.top/t/topic/ha91 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录