MFC 界面图片布局:动态调整图片大小和间距
在 MFC 中实现该界面布局和图片调整的方法如下:
-
在 MFC 中创建一个对话框应用程序。
-
打开对话框资源编辑器,将一个静态框控件拖放到对话框上,作为图片显示区域。
-
编辑对话框资源,将静态框控件的 ID 设置为 IDC_PICTURE。
-
打开对话框的类文件(例如 DialogName.cpp),添加以下代码:
BOOL CDialogName::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 获取屏幕分辨率
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);
// 计算图片大小和间隔
int margin = 20; // 左右边距和上下边距
int rows = 3;
int cols = 4;
int spacing = 10; // 图片间隔
int imageWidth = (screenWidth - 2 * margin - (cols - 1) * spacing) / cols;
int imageHeight = (screenHeight - 2 * margin - (rows - 1) * spacing) / rows;
// 获取静态框控件的位置和大小
CRect rect;
GetDlgItem(IDC_PICTURE)->GetWindowRect(&rect);
ScreenToClient(&rect);
// 调整静态框控件的位置和大小
rect.left = margin;
rect.top = margin;
rect.right = rect.left + cols * imageWidth + (cols - 1) * spacing;
rect.bottom = rect.top + rows * imageHeight + (rows - 1) * spacing;
GetDlgItem(IDC_PICTURE)->MoveWindow(&rect);
// 调整图片大小并居中显示
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
// 计算图片的位置和大小
int imageLeft = rect.left + j * (imageWidth + spacing);
int imageTop = rect.top + i * (imageHeight + spacing);
int imageRight = imageLeft + imageWidth;
int imageBottom = imageTop + imageHeight;
// 创建或加载图片,并设置图片位置和大小
CStatic* pImage = new CStatic;
pImage->Create(_T(''), WS_CHILD | WS_VISIBLE | SS_BITMAP, CRect(imageLeft, imageTop, imageRight, imageBottom), this);
pImage->SetBitmap((HBITMAP)LoadImage(NULL, _T('image.jpg'), IMAGE_BITMAP, imageWidth, imageHeight, LR_LOADFROMFILE));
// 图片居中显示
pImage->SetWindowPos(NULL, imageLeft, imageTop, imageWidth, imageHeight, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE);
}
}
return TRUE;
}
-
将上述代码中的'image.jpg'替换为你自己的图片路径。
-
编译并运行程序,即可在界面上看到按照屏幕分辨率调整大小并居中显示的图片布局。
原文地址: http://www.cveoy.top/t/topic/phe3 著作权归作者所有。请勿转载和采集!