双缓冲绘图

来源:互联网 发布:阿里云汽车荣威rx5 编辑:程序博客网 时间:2024/06/03 23:49
   CRect   rc;    // 定义一个矩形区域变量GetClientRect(rc); int nWidth   =   rc.Width();   int nHeight   =   rc.Height();      CDC   *pDC = GetDC();    // 定义设备上下文CDC MemDC; // 定义一个内存显示设备对象 CBitmap MemBitmap; // 定义一个位图对象      //建立与屏幕显示兼容的内存显示设备        MemDC.CreateCompatibleDC(pDC);          //建立一个与屏幕显示兼容的位图,位图的大小可选用窗口客户区的大小 MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);     //将位图选入到内存显示设备中,只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上    CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap);       //先用背景色将位图清除干净,否则是黑色。这里用的是白色作为背景   MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255)); //绘图操作等在这里实现  MemDC.MoveTo(……); MemDC.LineTo(……);   MemDC.Ellipse(……);  //将内存中的图拷贝到屏幕上进行显示 pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY); //绘图完成后的清理   MemDC.SelectObject(pOldbitmap);    MemBitmap.DeleteObject();
原创粉丝点击