工控编程吧
标题: 上位机MFC如何显示位图资源 [打印本页]
作者: qq263946146 时间: 2019-7-31 11:13
标题: 上位机MFC如何显示位图资源
位图操作对应的类为CBitmap。
我们可以实例化一个变量,然后加载位图
CBitmap bitmap;
if (!bitmap.LoadBitmap(IDB_BITMAP1))
{
return;
}
IDB_BITMAP1为我们事先 导入到工程的位图ID.
如果想要获取位图大小等信息。
我们可以
//获得位图信息
BITMAP bmpinfo;
bitmap.GetBitmap(&bmpinfo);
之后我们就可以使用CDC的成员函数SelectObject。选择位图
//将位图装入内存设备环境
CBitmap* pOldBitmap = MemDC.SelectObject(&bitmap);
具体可以参考例程OnPaint中的代码
- void CGkbc8Dlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // device context for painting
- SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
- // Center icon in client rectangle
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
- // Draw the icon
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CPaintDC dc(this);
- //加载位图
- CBitmap bitmap;
- if (!bitmap.LoadBitmap(IDB_BITMAP1))
- {
- return;
- }
- //获得位图信息
- BITMAP bmpinfo;
- bitmap.GetBitmap(&bmpinfo);
- //创建内存DC
- CDC MemDC;
- MemDC.CreateCompatibleDC(&dc);
- //将位图装入内存设备环境
- CBitmap* pOldBitmap = MemDC.SelectObject(&bitmap);
- //获得客户区矩形
- CRect rect;
- GetClientRect(&rect);
- //将位图从内存设备环境拷贝到屏幕设备环境
- dc.BitBlt(
- rect.left + (rect.Width() - bmpinfo.bmWidth) / 2,
- rect.top + (rect.Height() - bmpinfo.bmHeight) / 2,
- bmpinfo.bmWidth,
- bmpinfo.bmHeight,
- &MemDC,
- 0,
- 0,
- SRCCOPY);
- //恢复原来的位图
- MemDC.SelectObject(pOldBitmap);
- CDialog::OnPaint();
- }
- }
复制代码
(, 下载次数: 0)