双缓存绘图的一个小问题
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。