首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

vc绘丹青不出

2013-02-24 
vc绘图画不出本帖最后由 luck_good 于 2013-02-18 21:27:15 编辑在vc2008,我新建一个对话框程序,拉一个按

vc绘图画不出
本帖最后由 luck_good 于 2013-02-18 21:27:15 编辑 在vc2008,我新建一个对话框程序,拉一个按钮,在按钮的事件函数中加上下面的代码

CDC *pDC=GetDC();
CDC *pMemDC=new CDC;
pMemDC->CreateCompatibleDC(pDC);
pMemDC->DrawText("hello",CRect(0,0,100,100),DT_LEFT);
StretchBlt(pDC->m_hDC,0,0,100,100,pMemDC->m_hDC,0,0,100,100,SRCCOPY);


为什么在对话框上没有画出来Hello呢
直接使用pDC->DrawText("hello",CRect(0,0,100,100),DT_LEFT);可以画出来,但是为什么上面的先在内存设备上绘图再贴在pDC上就不行呢
[解决办法]
CRect rect;//定义成你需要的区域大小

CDC memdc; //画布对象  
CBitmap bitmap; //内存位图   
memdc.CreateCompatibleDC(pDC); //创建与显示设备兼容的位图  
bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());  //加载位图
CBitmap *pOldBit=memdc.SelectObject(&bitmap); //将位图选入设备    
memdc.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255)); 
 
.....画图用memdc(内存DC)

pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memdc, 0, 0, SRCCOPY); 
//在内存里画完然后用BitBlt贴到屏幕上
bitmap.DeleteObject(); 
memdc.DeleteDC();   //释放内存
ReleaseDC(pDC);

热点排行