读书人

MFC怎样在【对话框】上创建兼容位图

发布时间: 2013-03-27 11:22:41 作者: rapoo

MFC怎样在【对话框】上创建兼容位图,并用兼容DC绘图失败,总是显示黑色背景,怎么解决?
我是想再IDC_FONT控件的周围绘制一个矩形框,但是填充颜色一直是黑的,无法改变。无论是在那块区域画图或者输入文字都无法显示,只是黑色背景,该怎么解决?

BOOL CSettingDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
/////////////////////////////////////////////////////////////////
//////在对话框中用兼容DC的方式绘制图形
/////////////////////////////////////////////////////////////////

//创建兼容DC
CDC memdc;
memdc.CreateCompatibleDC(pDC);
//获得控件矩形区域
CRect rect;
GetDlgItem(IDC_FONT)->GetWindowRect(&rect);
ScreenToClient(&rect);
rect = CRect(rect.left-10, rect.top-10, rect.right+10, rect.bottom+10);

//创建兼容位图
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
memdc.SelectObject(&bitmap);
//memdc.FillSolidRect(rect, pDC->GetBkColor());

//创建画刷
CBrush brush(RGB(255, 0, 0));
memdc.FillRect(rect, &brush); //在绘制长方形时,用pen绘制边框颜色,用brush绘制填充颜色这两句没有作用
pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memdc, 0, 0, SRCCOPY);

return true;
//return CDialog::OnEraseBkgnd(pDC);
}



[解决办法]
另外跟踪一下,看看fillrect的时候,rect 的值是不是从0,0,开始的

读书人网 >VC/MFC

热点推荐