Welcome to ErranLi's Blog!

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

常用链接

留言簿(12)

搜索

  •  

积分与排名

  • 积分 - 163876
  • 排名 - 150

最新评论

阅读排行榜

 

VC 双缓冲绘图

 

BOOL CGraphDlg::OnDraw(CDC* pDC)

{

       CRect rc;

       GetClientRect(&rc); 

      

       CDC  MemDC;

      

       CBitmap  MemBitmap;  

      

       MemDC.CreateCompatibleDC(NULL);      

      

       MemBitmap.CreateCompatibleBitmap(pDC, rc.Size().cx,rc.Size().cy);

      

       CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);      

      

       MemDC.BitBlt(0,0,rc.width, rc.height, pDC,0,0,SRCCOPY);

      

       m_pGraph->SetGraphDC(&MemDC);

       m_pGraph->DoGraphShowEvent();  

             

       pDC->BitBlt(0,0, rc.Size().cx,rc.Size().cy,&MemDC,0,0,SRCCOPY);  

 

       MemDC.SelectObject(pOldBit);

       MemBitmap.DeleteObject();

       MemDC.DeleteDC();

}

 

Delphi 双缓冲绘图:

procedure TBkCoordi.Draw(Canvas : TCanvas);

var

    _bmp : TBitmap;

    _width, _height : integer;

    _top, _left : integer;

begin

    _width := Round(m_width);

    _height := Round(m_height);

    _left := Round(m_topleft.x);

    _top := Round(m_topleft.y);

 

    _bmp := Tbitmap.Create;

    _bmp.Handle := CreateCompatibleDC(Canvas.Handle);

    _bmp.Width :=  _width;

    _bmp.Height :=  _height;

 

    BitBlt(_bmp.Canvas.Handle,0,0,_width,_height, Canvas.Handle,_left,_top,SRCCOPY);

                 

    if m_showcross then m_cross.Draw(_bmp.Canvas);

    if @OnDrawing <> nil then OnDrawing(_bmp.Canvas);

 

    BitBlt(Canvas.Handle,_left,_top,_width,_height, _bmp.Canvas.Handle,0,0,SRCCOPY);

 

    _bmp.Free;

end;

posted on 2006-11-25 09:23 erran 阅读(2169) 评论(0)  编辑 收藏 引用 所属分类: MFCDelphi

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理