我在OnDraw函数中绘图,老是有问题,我建立2个缓冲区,一个是大缓冲区 m_MemDC所有的图片我先贴在这里,一个是小缓冲区copypDC用它为大缓冲区贴小图片,最后我将大缓冲区m_MemDC传给pDC.....不知道为什么屏幕不显示m_MemDC的内容...如我只用一个小缓冲直接传给pDC,一切正常.....兄弟们帮帮忙了 void CMapEditBy2003View::OnDraw(CDC* pDC)
{
CMapEditBy2003Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
/****************************************画背景****************************/
// 缓冲区DC
CDC* m_MemDC;
m_MemDC=new CDC;
CDC* copypDC;
copypDC=new CDC;
HBITMAP m_hTempBitmap;m_hTempBitmap=(HBITMAP)::LoadImage(NULL,pDoc->m_Map.m_BackGroud,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);
m_MemDC->CreateCompatibleDC(pDC); //建立兼容dc
copypDC->CreateCompatibleDC(m_MemDC);copypDC->SelectObject(m_hTempBitmap); //选取图片
for(int i=0;i<pDoc->m_Map.m_iHeight/32;i++) //将图片存入缓冲区
for ( int j=0;j<pDoc->m_Map.m_iWidth/32;j++)
{
m_MemDC->BitBlt(i*32, j*32, 32, 32,
copypDC, 0, 0, SRCCOPY );
}/******************************************************************/
/**************************画选取的图片****************************/ copypDC->SelectObject(m_bitmap); //选取特定的图片
m_MemDC->BitBlt( x, y, w, h,
copypDC, 0, 0, SRCCOPY ); pDC->BitBlt(0,0,rect.right,rect.bottom,m_MemDC,0,0,SRCCOPY); delete(copypDC);
delete(m_MemDC);}
{
CMapEditBy2003Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
/****************************************画背景****************************/
// 缓冲区DC
CDC* m_MemDC;
m_MemDC=new CDC;
CDC* copypDC;
copypDC=new CDC;
HBITMAP m_hTempBitmap;m_hTempBitmap=(HBITMAP)::LoadImage(NULL,pDoc->m_Map.m_BackGroud,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);
m_MemDC->CreateCompatibleDC(pDC); //建立兼容dc
copypDC->CreateCompatibleDC(m_MemDC);copypDC->SelectObject(m_hTempBitmap); //选取图片
for(int i=0;i<pDoc->m_Map.m_iHeight/32;i++) //将图片存入缓冲区
for ( int j=0;j<pDoc->m_Map.m_iWidth/32;j++)
{
m_MemDC->BitBlt(i*32, j*32, 32, 32,
copypDC, 0, 0, SRCCOPY );
}/******************************************************************/
/**************************画选取的图片****************************/ copypDC->SelectObject(m_bitmap); //选取特定的图片
m_MemDC->BitBlt( x, y, w, h,
copypDC, 0, 0, SRCCOPY ); pDC->BitBlt(0,0,rect.right,rect.bottom,m_MemDC,0,0,SRCCOPY); delete(copypDC);
delete(m_MemDC);}
解决方案 »
- 欢迎界面的问题,求高手帮助
- VC ADO SQLserver数据库 问题
- 问题,泄漏问题
- 树控件的小问题
- (原创)三招两式搞定修改项目名- -为bolg宣传,散分
- 急急急!!!关于两个dll和exe之间的问题
- sql语句中in的优化?
- CString中的Mid(),Left()等函数时,一个汉字是按一个字符还是两个字符?
- 高级程序员什么时候考试?哪里有这样的资料!网站~软件工程我想报考!
- 要在视图里面显示图片同时又要显示大量的文本,最好用什么方法啊
- 请教:函数指针,指向其他的类中的函数。
- 在电脑前呆了32小时了,导师让我把这个做完才放我回家,郁闷死了!!matlab7.1做成com组件,而后由VC6.0调用的问题?请高手指点!
此外,用CreateCompatibleBitmap创建bitmap然后,m_MemDC->SelectObject(bitmap);