使用雙緩沖技術(shù)繪制曲線圖

字號(hào):

當(dāng)數(shù)據(jù)量很大時(shí),繪圖可能需要幾秒鐘甚至更長(zhǎng)的時(shí)間,而且有時(shí)還會(huì)出現(xiàn)閃爍現(xiàn)象,為了解決這些問(wèn)題,可采用雙緩沖技術(shù)來(lái)繪制曲線圖。
    雙緩沖即在內(nèi)存中創(chuàng)建一個(gè)與屏幕繪圖區(qū)域一致的對(duì)象,先將圖形繪制到內(nèi)存中的這個(gè)對(duì)象上,再一次性將這個(gè)對(duì)象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度。雙緩沖實(shí)現(xiàn)過(guò)程如下:
    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ū)位圖拷貝到當(dāng)前畫布上
    BitBlt(Canvas->Handle,0,0,Width,Height,BufferBmp->Canvas->Handle,0,0,SRCCOPY);
    4、釋放內(nèi)存緩沖區(qū)
    delete BufferBmp;