铁路通信段工资多少:防止画图时背景的擦除?(传说中的双缓冲)(转载)

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 06:46:30
例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);  //显示时间