MFC 对话框中加载 BMP 图片并根据屏幕分辨率自适应调整大小
要实现上述需求,可以按照以下步骤进行操作:
- 创建一个 MFC 对话框应用程序。
- 在对话框的 OnInitDialog 函数中,进行图片加载和调整大小的操作。
- 在对话框的 OnPaint 函数中,绘制图片。
下面是一个示例代码,演示如何实现上述需求:
// 在头文件中定义以下成员变量
CBitmap m_bitmap; // 用于加载 bmp 图片
CRect m_imageRect[3][4]; // 图片矩形数组,用于存储每张图片的位置和大小
// 在 OnInitDialog 函数中进行图片加载和调整大小的操作
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 加载 bmp 图片
m_bitmap.LoadBitmap(IDB_BITMAP);
// 获取屏幕分辨率
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);
// 计算图片大小
int imageWidth = (screenWidth - 2 * 10) / 4; // 4 列
int imageHeight = (screenHeight - 2 * 10) / 3; // 3 行
// 设置图片矩形数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
int left = 10 + j * (imageWidth + 10);
int top = 10 + i * (imageHeight + 10);
int right = left + imageWidth;
int bottom = top + imageHeight;
m_imageRect[i][j] = CRect(left, top, right, bottom);
}
}
return TRUE;
}
// 在 OnPaint 函数中绘制图片
void CMyDialog::OnPaint()
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = memDC.SelectObject(&m_bitmap);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
dc.BitBlt(m_imageRect[i][j].left, m_imageRect[i][j].top, m_imageRect[i][j].Width(), m_imageRect[i][j].Height(),
&memDC, 0, 0, SRCCOPY);
}
}
memDC.SelectObject(pOldBitmap);
}
在上述示例代码中,假设有一个名为 IDB_BITMAP 的 bmp 图片资源,可以将其替换为实际使用的图片资源。
原文地址: https://www.cveoy.top/t/topic/phaz 著作权归作者所有。请勿转载和采集!