全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1575
推到 Plurk!
推到 Facebook!

拖曳拉動時,如何做到八個小方塊,完全不會閃動

答題得分者是:ikk
harktrip
一般會員


發表:30
回覆:30
積分:12
註冊:2007-04-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-01 08:41:38 IP:59.120.xxx.xxx 訂閱

[code cpp]
(mousemove事件裡)
(Edit_Form[Page_Code]->DoubleBuffered = true;)

Application->ProcessMessages();

Edit_Form[Page_Code]->Canvas->Pen->Color=clYellow; //筆刷設定
Edit_Form[Page_Code]->Canvas->Pen->Style=psDot;
Edit_Form[Page_Code]->Canvas->Pen->Mode=psClear ;
Edit_Form[Page_Code]->Canvas->Pen->Width=1;

process_part( 0,ARow_all->MMI_Ins_Type); //重畫物件,物件尺寸改變時,內容也必須更新
Edit_Form[Page_Code]->Repaint();
Edit_Form[Page_Code]->Canvas->Rectangle
(ctrl->Left-1,ctrl->Top-1,
ctrl->Left ctrl->Width 1,ctrl->Top ctrl->Height 1); //繪製物件外框虛線
Edit_Form[Page_Code]->Canvas->Brush->Style=bsClear; //BRUSH風格

dx1=ctrl->Left-3;
dx2=dx1 (ctrl->Width)/2;
dx3=dx1 ctrl->Width;

dy1=ctrl->Top-3;
dy2=dy1 (ctrl->Height)/2;
dy3=dy1 ctrl->Height;
RECT rectdor={105,229,111,235}; //八個小方塊的圖案
RECT rx1={ dx1,dy1,dx1 6,dy1 6} ;
RECT rx2={ dx2,dy1,dx2 6,dy1 6} ;
RECT rx3={ dx3,dy1,dx3 6,dy1 6} ;
RECT rx4={ dx1,dy2,dx1 6,dy2 6} ;
RECT rx5={ dx3,dy2,dx3 6,dy2 6} ;
RECT rx6={ dx1,dy3,dx1 6,dy3 6} ;
RECT rx7={ dx2,dy3,dx2 6,dy3 6} ;
RECT rx8={ dx3,dy3,dx3 6,dy3 6} ;
Edit_Form[Page_Code]->Canvas->CopyRect(rx2,Form1->ImageBT->Canvas,rectdor);
Edit_Form[Page_Code]->Canvas->CopyRect(rx3,Form1->ImageBT->Canvas,rectdor);
Edit_Form[Page_Code]->Canvas->CopyRect(rx6,Form1->ImageBT->Canvas,rectdor);
Edit_Form[Page_Code]->Canvas->CopyRect(rx7,Form1->ImageBT->Canvas,rectdor);
Edit_Form[Page_Code]->Canvas->CopyRect(rx8,Form1->ImageBT->Canvas,rectdor);
Edit_Form[Page_Code]->Canvas->CopyRect(rx1,Form1->ImageBT->Canvas,rectdor);
Edit_Form[Page_Code]->Canvas->CopyRect(rx4,Form1->ImageBT->Canvas,rectdor);
Edit_Form[Page_Code]->Canvas->CopyRect(rx5,Form1->ImageBT->Canvas,rectdor);


Application->ProcessMessages();

[/code]

各位兄弟,新年第一帖^^
如題和上面的程式,我拉動一個物件時,那八個小方塊,都會因為重繪物件時,會把小方塊蓋到
這樣一來 當然會有閃動的問題...

有沒有任何方法,可以讓小方塊不會閃?

因為看過別人這樣的東西:拉動時,超級順的,外框 小方塊 物件 完全不閃,而且它的物件,
也是在拉動時 會一直更新的內容的

這問題困擾很久了..各位指點一下,感恩啦~~~
編輯記錄
harktrip 重新編輯於 2009-01-01 08:42:43, 註解 無‧
harktrip 重新編輯於 2009-01-01 08:43:57, 註解 無‧
harktrip 重新編輯於 2009-01-01 09:29:35, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-09 11:36:12 IP:140.116.xxx.xxx 訂閱
可以利用一個暫存圖(off-screen), 先將要改變的畫面畫在此圖上,
在用此暫存圖取代顯示用的圖.
相關函式:
// 將畫面 從 off-screen copy 到 畫面
BitBlt(SDIAppForm->MainDrawImage->Canvas->Handle, 0, 0, SDIAppForm->MainDrawImage->Width,
SDIAppForm->MainDrawImage->Height, OffScreen->Canvas->Handle, 0, 0, SRCCOPY);
------
FPGA驗證, FPGA開發平台, http://smims.com
系統時間:2024-04-19 9:07:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!