使用雙緩沖技術繪制曲線圖

字號:

當數(shù)據(jù)量很大時,繪圖可能需要幾秒鐘甚至更長的時間,而且有時還會出現(xiàn)閃爍現(xiàn)象,為了解決這些問題,可采用雙緩沖技術來繪制曲線圖。
    雙緩沖即在內(nèi)存中創(chuàng)建一個與屏幕繪圖區(qū)域一致的對象,先將圖形繪制到內(nèi)存中的這個對象上,再一次性將這個對象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度。雙緩沖實現(xiàn)過程如下:
    1、在內(nèi)存中創(chuàng)建與畫布一致的緩沖區(qū)
    BufferBmp=new Graphics::TBitmap();
    BufferBmp->Canvas->Handle=CreateCompatibleDC(Canvas->Handle);
    BufferBmp->Width=Width;
    BufferBmp->Height=Height;
    2、在緩沖區(qū)畫圖
    BufferBmp->Canvas->Brush->Color=clBtnFace;
    BufferBmp->Canvas->FillRect(Rect(0,0,Width,Height));
    BufferBmp->Canvas->MoveTo(…);
    …………………………
    3、將緩沖區(qū)位圖拷貝到當前畫布上
    BitBlt(Canvas->Handle,0,0,Width,Height,BufferBmp->Canvas->Handle,0,0,SRCCOPY);
    4、釋放內(nèi)存緩沖區(qū)
    delete BufferBmp;