打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
防止画图时背景的擦除?(传说中的双缓冲)(转载)
例1:
//全局变量
CDC MemDC;
CBitmap MemBitmap;
CBitmap *pOldBit;
//在int CMYView::OnCreate(LPCREATESTRUCT lpCreateStruct) 加
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(pDC,200,200);
pOldBit=MemDC.SelectObject(&MemBitmap);
//在void CMYew::OnDraw(CDC* pDC)加
pDC->BitBlt(0,0,200,200,&MemDC,0,0,SRCCOPY);
要画的时候都用MemDC来画,画好了,Invalidate();一下就可能以
 
例2:
在OnTimer函数中这样写:
OnTimer()
{
   CTime time = CTime::GetCurrentTime();
  CString str;
  str = time.Format("%H:%M:%S");//得到当前时间,当然你可以用增加的方法,不用每次得到
   HDC hdc = ::GetDC( GetDlgItem(IDC_STATIC_X)->m_hWnd );
   CDC * pDC = CDC::FromHandle(hdc);       //获得CStatic的DC
   CDC mdc;
   mdc.CreateCompatibleDC(pDC);           //创建兼容的内存DC
   CBitmap bitmap;                        //创建兼容的内存位图
   bitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
   CBitmap * pold = mdc.SelectObject(&bitmap); //选入位图,你将在这个位图上画上时间
   pDC->SetTextColor( RGB(0,0,0) );            //设置时间的背景色
   pDC->SetBkColor( RGB(255,255,255));         //设置时间的文字颜色
   CRect rect;
   ::GetClientRect(handle,&rect);              //获得区域
   mdc.DrawText(str,&rect,DT_CENTER | DT_VCENTER);   //把时间画在位图上
   pDC->BitBlt(0,0,rect.Width(),rect.Height(),&mdc,0,0,SRCCOPY);  //显示时间
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MFC绘图CBitmap/HBITMAP/CImage/CStatic/CDC/HDC
双缓冲方法解决屏幕刷新闪烁的问题 - 全部文章 - c++,c,vc
设置画图控件背景图
mfc中背景图片随着窗口大小的改变而改变
怎样使用MFC打开一幅图片
内存DC
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服