要加载 BMP 图片并根据屏幕分辨率调整图片大小,可以使用 MFC 中的 CImage 类来实现。以下是一个示例代码:

// 获取屏幕分辨率
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);

// 加载 BMP 图片
CImage image;
image.Load(_T("example.bmp"));

// 调整图片大小
int imageWidth = image.GetWidth();
int imageHeight = image.GetHeight();
int cellWidth = screenWidth / 5;
int cellHeight = screenHeight / 3;

// 创建设备上下文
CDC* pDC = GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap memBitmap;
memBitmap.CreateCompatibleBitmap(pDC, cellWidth, cellHeight);
CBitmap* pOldBitmap = memDC.SelectObject(&memBitmap);

// 绘制图片
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 5; j++) {
        memDC.StretchBlt(0, 0, cellWidth, cellHeight, image.GetDC(),
            0, 0, imageWidth, imageHeight, SRCCOPY);
        pDC->BitBlt(j * cellWidth, i * cellHeight, cellWidth, cellHeight, &memDC, 0, 0, SRCCOPY);
    }
}

// 清理资源
memDC.SelectObject(pOldBitmap);
image.ReleaseDC();
memBitmap.DeleteObject();
memDC.DeleteDC();
ReleaseDC(pDC);

此代码将屏幕分成 3 行 5 列,根据屏幕分辨率计算每个单元格的大小,并将图片按比例缩放到每个单元格的大小。然后使用 StretchBlt 函数将图片绘制到内存设备上下文中,再使用 BitBlt 函数将内存设备上下文中的图片绘制到屏幕上的相应位置。


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

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