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

GDI 抉择了画笔 但是绘制出来的图形没有颜色

2013-04-20 
GDI 选择了画笔 但是绘制出来的图形没有颜色// 在MFC CView 的OnDraw()方法里面RECTrect::GetClientRect(

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

热点排行