以下是使用 MFC 读取 res 中的 5 张 bmp 图片,计算位图的宽度和高度,并将其画在指定坐标上的示例代码:

#include "stdafx.h"
#include "resource.h"

class CMyWinApp : public CWinApp
{
public:
    virtual BOOL InitInstance();
};

class CMyFrameWnd : public CFrameWnd
{
public:
    CMyFrameWnd();
protected:
    afx_msg void OnPaint();
    DECLARE_MESSAGE_MAP()
private:
    CBitmap m_bitmap[5];
};

BOOL CMyWinApp::InitInstance()
{
    m_pMainWnd = new CMyFrameWnd();
    m_pMainWnd->ShowWindow(SW_NORMAL);
    m_pMainWnd->UpdateWindow();
    return TRUE;
}

CMyFrameWnd::CMyFrameWnd()
{
    for (int i = 0; i < 5; i++)
    {
        m_bitmap[i].LoadBitmap(IDB_BITMAP1 + i);
    }
}

BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
    ON_WM_PAINT()
END_MESSAGE_MAP()

void CMyFrameWnd::OnPaint()
{
    CPaintDC dc(this);
    CDC memDC;
    memDC.CreateCompatibleDC(&dc);

    for (int i = 0; i < 5; i++)
    {
        BITMAP bmpInfo;
        m_bitmap[i].GetBitmap(&bmpInfo);

        int bitmapWidth = bmpInfo.bmWidth;
        int bitmapHeight = bmpInfo.bmHeight;

        memDC.SelectObject(&m_bitmap[i]);
        dc.BitBlt(i * (bitmapWidth + 10), 10, bitmapWidth, bitmapHeight, &memDC, 0, 0, SRCCOPY);
    }
}

CMyWinApp theApp;

上述代码中,CMyWinApp 类继承自 CWinApp,用于初始化应用程序。CMyFrameWnd 类继承自 CFrameWnd,用于创建主窗口,并且重载了 OnPaint 函数用于绘制位图。m_bitmap 数组存储了 5 张位图。

CMyFrameWnd 的构造函数中,使用 LoadBitmap 函数加载了 5 张位图,参数 IDB_BITMAP1 + i 表示资源 ID,需要根据实际的资源 ID 进行修改。

OnPaint 函数中,通过 GetBitmap 函数获取位图的宽度和高度,并使用 BitBlt 函数将位图绘制在指定的坐标上。i * (bitmapWidth + 10) 表示每张位图的横坐标,10 表示位图的纵坐标,bitmapWidthbitmapHeight 分别为位图的宽度和高度。SRCCOPY 表示直接将位图复制到目标设备上。

以上示例代码可以在 MFC 应用程序的 InitInstance 函数中调用 CMyWinApp 类来运行。

MFC 读取 Res 中的 5 张 BMP 图片并绘制

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

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