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

双缓存绘图的一个小疑点

2012-04-08 
双缓存绘图的一个小问题voidCSDIDrawView::OnDraw(CDC*pDC){CSDIDrawDoc*pDocGetDocument()ASSERT_VALID

双缓存绘图的一个小问题
void   CSDIDrawView::OnDraw(CDC*   pDC)
{
CSDIDrawDoc*   pDoc   =   GetDocument();
ASSERT_VALID(pDoc);

pDC-> LineTo(100,200);
}
//OK

void   CSDIDrawView::OnDraw(CDC*   pDC)
{
CSDIDrawDoc*   pDoc   =   GetDocument();
ASSERT_VALID(pDoc);

CDC   memDC;
memDC.CreateCompatibleDC(pDC);
memDC.MoveTo(0,0);
memDC.LineTo(100,200);
pDC-> BitBlt(0,0,1000,1000,&memDC,0,0,SRCAND);
}
//没有画出来
...

[解决办法]
不正确,创建一个与memDC相关连的HBITMAP然后在画才可以
[解决办法]
测试成功

void CSDIDrawView::OnDraw(CDC* pDC)
{
CSDIDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

//********************************

CWindowDC dc(this);
CBitmap myBitmap;
CDC myDC;
myDC.CreateCompatibleDC(&dc);
myBitmap.CreateCompatibleBitmap(&dc,1000,1000);
CBitmap *pOldBitmap = myDC.SelectObject(&myBitmap);

CRect rc(0,0,1000,1000);
CBrush mybrush(RGB(255,255,255));
myDC.FillRect(&rc,&mybrush);

myDC.MoveTo(0,0);
myDC.LineTo(100,200);

myDC.SelectObject(pOldBitmap);
myDC.DeleteDC();

CDC outDC;
outDC.CreateCompatibleDC(&dc);
outDC.SelectObject(&myBitmap);
pDC-> BitBlt(0, 0, 1000, 1000, &outDC, 0, 0, SRCCOPY);
myBitmap.DeleteObject();

}

[解决办法]
myBitmap.CreateCompatibleBitmap(&dc,1000,1000);
别忘了这个,创建Bitmap。

热点排行