GDI 选择了画笔 但是绘制出来的图形没有颜色
// 在MFC CView 的OnDraw()方法里面
RECTrect;
::GetClientRect(m_hWnd,&rect);
HDC hdc = pDC->m_hDC;
HDC hdcMem = ::CreateCompatibleDC(hdc);
int width = 0,height = 0;
width = rect.right - rect.left;
height = rect.bottom - rect.top;
HBITMAP hBitmap = ::CreateCompatibleBitmap(hdcMem,width,height);
::SelectObject(hdcMem,hBitmap);
FillSolidRect(0,0,width,height,RGB(255,255,255),hdcMem);
HPEN hPen = ::CreatePen(PS_SOLID,1,RGB(255,0,255));
HGDIOBJ hOldPen = ::SelectObject(hdcMem,hPen);
::Rectangle(hdcMem,50,50,100,100);
::BitBlt(hdc,0,0,width,height,hdcMem,0,0,SRCCOPY);
::SelectObject(hdc,hOldPen);
// 以上方法绘制出来没有颜色(黑色)
CDC memDC;
CRect rect;
GetClientRect(&rect);
CBitmap bmp;
memDC.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
CPen* pOldPen;
pOldPen = memDC.SelectObject(&pen);
HPEN hPen,hOldPen;
hPen = ::CreatePen(PS_SOLID,1,RGB(255,0,0));
hOldPen = (HPEN)::SelectObject(memDC.m_hDC,hPen);
CBitmap* pOldBit =(CBitmap *) memDC.SelectObject(bmp);
memDC.FillSolidRect(rect,RGB(255,255,255));
memDC.MoveTo(0,30);
memDC.LineTo(80,30);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
memDC.DeleteDC(); //删除DC
bmp.DeleteObject(); //删除位图
// 以上绘制就是OK 的
望高手解答小 这东西困扰小弟多时了 感激不尽啊。。。。。
gdi C 图形
[解决办法]
HBITMAP hBitmap = ::CreateCompatibleBitmap(hdcMem,width,height);
先把这里的hdcMem改成hdc