CClientDC pClientDC(this);
CDC memDC1,memDC2;
CBitmap memBitmap1,memBitmap2;
//先写入memDC1
memDC1.DeleteDC();
memBitmap1.DeleteObject();
memDC1.CreateCompatibleDC(NULL);
memBitmap1.CreateCompatibleBitmap(pClientDC,m_wMapWidth,m_wMapHeight);
memDC1.SelectObject(&memBitmap1);
//do somthing
memDC1.SetPixel(...)
memDC1.SetPixel(...)
...
pClientDC->BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC1,0 ,0,SRCCOPY)
///写入memDC2
CPen penSilver(PS_SOLID,2,RGB(192,192,192));
CBrush brSilver(RGB(192,192,192));
memDC2.DeleteDC();
memBitmap2.DeleteObject();
memDC2.CreateCompatibleDC(NULL);
memBitmap2.CreateCompatibleBitmap(pClientDC,m_wMapWidth,m_wMapHeight);
memDC2.SelectObject(&memBitmap2);
memDC2.SelectObject(penRed);
memDC2.SelectObject(brRed);
//do something
memDC2.Rectangle(x-1 ,y-1,x+1,y+1);
.... pClientDC->BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC2,0 ,0,SRCCOPY)
//////
结果输出的只有memDC2的内容,其它部分全变黑了(本来要有些图像)的
有没有可以使两个图加起来啊.
memDC1 和memDC2一定要分开的
请各位帮帮忙
CDC memDC1,memDC2;
CBitmap memBitmap1,memBitmap2;
//先写入memDC1
memDC1.DeleteDC();
memBitmap1.DeleteObject();
memDC1.CreateCompatibleDC(NULL);
memBitmap1.CreateCompatibleBitmap(pClientDC,m_wMapWidth,m_wMapHeight);
memDC1.SelectObject(&memBitmap1);
//do somthing
memDC1.SetPixel(...)
memDC1.SetPixel(...)
...
pClientDC->BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC1,0 ,0,SRCCOPY)
///写入memDC2
CPen penSilver(PS_SOLID,2,RGB(192,192,192));
CBrush brSilver(RGB(192,192,192));
memDC2.DeleteDC();
memBitmap2.DeleteObject();
memDC2.CreateCompatibleDC(NULL);
memBitmap2.CreateCompatibleBitmap(pClientDC,m_wMapWidth,m_wMapHeight);
memDC2.SelectObject(&memBitmap2);
memDC2.SelectObject(penRed);
memDC2.SelectObject(brRed);
//do something
memDC2.Rectangle(x-1 ,y-1,x+1,y+1);
.... pClientDC->BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC2,0 ,0,SRCCOPY)
//////
结果输出的只有memDC2的内容,其它部分全变黑了(本来要有些图像)的
有没有可以使两个图加起来啊.
memDC1 和memDC2一定要分开的
请各位帮帮忙
--------------------------
我的意思是一定要用两个CDC来画图我就是要让两个图重合起来,但是,好像是被memDC2中的背景刷给刷黑了.
本来,我想用memDC1.SetPixel(...)来画出一个矩形图作为背景,然后再有memDC2.Rectangle(x-1 ,y-1,x+1,y+1);画出一些点点,最后用pClientDC->BitBlt(...)显示到屏幕上.但结果memDC1画的图却被刷成黑色了,屏幕显示的只有黑色的背景和memDC2画的一些点点
解决如下
memDC1.CreateCompatibleDC(pClientDC);
memBitmap1.CreateCompatibleBitmap(pClientDC,m_wMapWidth,m_wMapHeight);
memDC1.SelectObject(&memBitmap1);
...
memDC2.CreateCompatibleDC(&memDC1);
memBitmap2.CreateCompatibleBitmap(&memDC1,m_wMapWidth,m_wMapHeight);
memDC2.SelectObject(&memBitmap2);
...
memDC1.BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC2,0 ,0,SRCCOPY);
pClientDC->BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC1,0 ,0,SRCCOPY)
方法不错,我试试
没有看到SetStyle之类方法啊.
to kevin_wang(勇气不再有)
我不喜欢这个方法,我试的时候也用过,但memDC2的所画的图会反色.
如果没有其它方法只好用这个了.:(
memDC1.BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC2,0 ,0,SRCCOPY);
==>
memDC1.BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC2,0 ,0,SRCPAINT);
pClientDC->BitBlt(0,0,rRect.Width(),rRect.Height(),&memDC2,0 ,0,SRCCOPY)