读书人

本人初学者想请问下关于MFC中的一个

发布时间: 2012-05-15 14:35:29 作者: rapoo

本人菜鸟,想请教下关于MFC中的一个问题
VC中GDI方法在Picture控件中显示图片的方法,怎么实现

[解决办法]
http://blog.csdn.net/joe_wang/article/details/5794682
[解决办法]
直接在OnPaint()函数中绘制图片:
void CGDIPictureDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
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;

dc.DrawIcon(x, y, m_hIcon);
}
else
{
//以下为新添加的加载bmp位图的代码
BITMAP bm;
CDC* pDC = GetDlgItem(IDC_STATIC)->GetDC();//IDC_STATIC为Picture控件ID
CDC objMemDC;
objMemDC.CreateCompatibleDC(pDC);
HBITMAP hbmp= (HBITMAP)::LoadImage(AfxGetInstanceHandle(),L"D:\\Test\\216.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
HBITMAP hOldBmp = (HBITMAP)objMemDC.SelectObject(hbmp);
::GetObject(hbmp,sizeof(BITMAP),(LPVOID)&bm);

BitBlt(pDC->m_hDC, 0,0, bm.bmWidth, bm.bmHeight, objMemDC.m_hDC, 0, 0, SRCCOPY);

objMemDC.DeleteDC();
this->ReleaseDC(pDC);
}
}
[解决办法]
我已经试过了,可以绘制图片。你说的是OnDraw函数吧?
OnPaint是窗口的消息响应函数,在视图类中将调用OnDraw

读书人网 >VC/MFC

热点推荐