在MM_LOMETRIC 下用双缓存,屏幕显示一堆乱七八糟的动写,怎样才能让图形能够正确显示出来呢?
解决方案 »
- 用GLUT库编写的程序能去掉控制台窗口吗
- CByteArray类型数据写入文件后怎么是乱码呢?
- mfc工程中如何使用STL二维数组?
- 求助关于北京爱恩科技
- 菜鸟发个问:许多专业名词。。。
- warning C4530:C++ exception handler used, but unwind semantics are not enabled. Specify -GX
- 使用classwizard选错了基类怎么办?(在线等)
- 调查一下加班工资的情况。。。
- 什么是Spy++,如VC++6.0中,Spy++有什么用?怎样使用?
- 头大的一个问题:(
- 高分求助:如果我把磁盘不小心格式化。但是用unformat没用,我现在怎么办,哪里有这种工具下载
- 还有最后的22分了,牛人们,指教一个问题,还是在饿着肚皮!
int nWidth=800,nHeight=600;
CDC *pDC=new CDC;
CBitmap bmp;
pDC->CreateCompatibleDC(dc);
bmp.CreateCompatibleBitmap(dc,nWidth,nHeight);
CBitmap *pBmp=pDC->SelectObject(&bmp);
pDC->FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
pDC->SetMapMode(MM_LOMETRIC );
pDC->MoveTo(0,0);
pDC->LineTo(100,-200);
//pDC->Rectangle(10,10,200,200);
dc->BitBlt(0,0,nWidth,nHeight,pDC,0,0,SRCCOPY);
pDC->SelectObject(pBmp);
我是在OnPaint() 中写的
CDC dcMem;
CRect rect;
GetClientRect(rect);CBitmap memBitmap;
dc.SetMapMode(MM_LOMETRIC);
dcMem.CreateCompatibleDC(&dc);
dcMem.SetMapMode(MM_LOMETRIC);
memBitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
dc.DPtoLP(rect); CBitmap *pOldBit = dcMem.SelectObject(&memBitmap);
dcMem.FillSolidRect(rect, RGB(255, 255, 255));dcMem.MoveTo(0,0);
dcMem.LineTo(100,-200);dc.BitBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(pOldBit);
int nWidth=800,nHeight=600;
CDC *pDC=new CDC;
CBitmap bmp;
pDC->CreateCompatibleDC(dc);
bmp.CreateCompatibleBitmap(dc,nWidth,nHeight);
CBitmap *pBmp=pDC->SelectObject(&bmp);
pDC->SetMapMode(MM_LOMETRIC );
pDC->FillSolidRect(0,0,nWidth,-nHeight,RG(255,255,255));
pDC->MoveTo(0,0);
pDC->LineTo(100,-200);
//pDC->Rectangle(10,10,200,200);
pDC->SetMapMode(MM_TEXT );
dc->BitBlt(0,0,nWidth,nHeight,pDC,0,0,SRCCOPY);
pDC->SelectObject(pBmp);
问题已解决,映射完后我又映射回来了,谢谢你给我提供了思路,我还想问一个问题,现在我的代码存在闪屏,可是我有从载不了OnEraseBkgnd(CDC* pDC)函数,能不能帮忙解决一下。