请教VC绘图问题!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/01 22:52:03
CBrush brush,*oldBrush;
CDC *memDC;

memDC=new CDC;
memDC->CreateCompatibleDC(pDC);
brush.CreateSolidBrush(RGB(0,255,255));
oldBrush=memDC->SelectObject(&brush);
memDC->Ellipse(0,0,100,100);
pDC->BitBlt(0,0,100,100,memDC,0,0,SRCCOPY);
memDC->SelectObject(oldBrush);
delete memDC;

上面这段代码,放在OnDraw 里面为什么不能显示椭圆?百思不得其解.
但是下面这段代码就能显示椭圆了,两段代码就差了选择一个位图阿.....
CBrush brush,*oldBrush;
CDC *memDC;
CBitmap bit;

memDC=new CDC;
memDC->CreateCompatibleDC(pDC);
brush.CreateSolidBrush(RGB(0,255,255));
bit.LoadBitmap(IDB_BITMAP_SMALL);
oldBrush=memDC->SelectObject(&brush);
memDC->SelectObject(&bit);
memDC->Ellipse(0,0,100,100);
pDC->BitBlt(0,0,100,100,memDC,0,0,SRCCOPY);
memDC->SelectObject(oldBrush);
delete memDC;

回答好的人给10分!

memDC->CreateCompatibleDC(pDC);
创建内存DC后,还必须创建一个兼容位图:
bit.CreateCompatibleBitmap(pDC, nWidth, nHeight) ;
然后将兼容位图的句柄选入内存DC:
memDC->SelectObject(&bit) ;
只有这样才可以使用内存DC绘图。

当然如果不用CreateCompatibleBitmap创建位图,而是使用LoadBitmap加载一个现有的位图也是可以的,但必须将位图句柄选入内存DC才可以使用内存DC绘图。