要实现上述需求,可以按照以下步骤进行操作:

  1. 创建一个 MFC 对话框应用程序。
  2. 在对话框的 OnInitDialog 函数中,进行图片加载和调整大小的操作。
  3. 在对话框的 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 著作权归作者所有。请勿转载和采集!

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