MFC 加载 BMP 图片并按 3 行 4 列 调整大小 - 适应窗口分辨率
要加载 BMP 图片为 3 行 4 列,可以使用 MFC 的 CDC 类来实现。以下是一个示例代码:
// 获取图片的分辨率
CImage image;
image.Load(_T("your_image.bmp"));
int width = image.GetWidth();
int height = image.GetHeight();
// 计算调整后的图片大小
int cellWidth = width / 4;
int cellHeight = height / 3;
// 创建用于显示图片的窗口
CRect rect(0, 0, cellWidth, cellHeight);
CDC* pDC = GetDC();
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC, cellWidth, cellHeight);
CBitmap* pOldBmp = memDC.SelectObject(&bmp);
// 逐个单元格显示图片
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 4; col++) {
// 绘制图片到内存DC
memDC.FillSolidRect(rect, RGB(255, 255, 255)); // 清空单元格
memDC.StretchBlt(0, 0, cellWidth, cellHeight, pDC, col * cellWidth, row * cellHeight, cellWidth, cellHeight, SRCCOPY);
// 绘制内存DC到窗口DC
pDC->BitBlt(col * cellWidth, row * cellHeight, cellWidth, cellHeight, &memDC, 0, 0, SRCCOPY);
}
}
// 清理资源
memDC.SelectObject(pOldBmp);
ReleaseDC(pDC);
这段代码首先加载 BMP 图片,然后计算出调整后的图片大小。接下来,创建一个用于显示图片的内存 DC,并创建一个与之兼容的位图。然后,循环遍历每个单元格,将图片的一部分绘制到内存 DC 中,再将内存 DC 绘制到窗口 DC 中,以实现正常显示图片。最后,清理资源。
注意,这只是一个示例代码,你需要根据实际情况进行适当修改。
原文地址: https://www.cveoy.top/t/topic/pgLp 著作权归作者所有。请勿转载和采集!