你向内存DC上画什么,上面就显示什么,前提是内存DC必须先用SelectObject选中一个Bitmap。
OnPaint和内存DC不搭界的。
OnPaint和内存DC不搭界的。
解决方案 »
- 【离职】10年聚随笔(随笔写写思考的东西)
- MsgWaitForMultipleObjects的用法
- 求VC一个简单的循环赋值
- 希望我的面试能成功。技术关已经过了,现在等老总点头了。当然希望能成,如果不能成,也没有关系。
- 求:一个最简单的网络编程VC实例(用于网络编程入门)
- 如何调节一个位图的亮度和饱和度,谢谢!
- 求完整的短时傅立叶变换源码
- 请问一个关于GB要转换成日文的Shift-JIS内码的问题
- 如何实现视图中绘制图形的自动缩放,同时需要滚动条功能?
- 请问怎么用用C程序读出Word文件里面的内容(只要内容和大小)
- 一个关于CTabCtrl的问题(初级)
- 如何全部将网络邻居列举的计算机的名字存入文件中?
首先在OnCreate里创建和初始化内存位图,然后在OnDraw里显示位图就可以了
// CDC *MemDC;
// CBitmap *BitmapDC;
int CChessView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
srand((unsigned)time(NULL));
CDC *DC=GetDC();
MemDC=new CDC;
BitmapDC=new CBitmap;
MemDC->CreateCompatibleDC(DC);
BitmapDC->CreateCompatibleBitmap(DC,640,480);
MemDC->SelectObject(BitmapDC);
CBitmap TempMap;
TempMap.LoadBitmap(IDB_BOARD);
MemDC->SelectObject(&TempMap);
//以下还有若干行
}void CChessView::OnDraw(CDC* pDC)
{
CChessDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
RECT rect;
static BOOL IsFirst=TRUE;
if(IsFirst==TRUE)
{
IsFirst=FALSE;
pDC->GetClipBox(&rect);
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,MemDC,rect.left,rect.top,SRCCOPY);
Begin();
return;
}
pDC->GetClipBox(&rect);
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,MemDC,rect.left,rect.top,SRCCOPY);
}
我会给你们加分的
我知道OnPaint()是响应WM_PAINT消息的,也见过OnDraw(),哪位能给我讲讲OnPaint()和OnDraw()的区别吗
也就是说OnDraw比OnPaint方便了那么一点点。