拖曳拉動時,如何做到八個小方塊,完全不會閃動 |
答題得分者是:ikk
|
harktrip
一般會員 發表:30 回覆:30 積分:12 註冊:2007-04-11 發送簡訊給我 |
[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] 各位兄弟,新年第一帖^^ 如題和上面的程式,我拉動一個物件時,那八個小方塊,都會因為重繪物件時,會把小方塊蓋到 這樣一來 當然會有閃動的問題... 有沒有任何方法,可以讓小方塊不會閃? 因為看過別人這樣的東西:拉動時,超級順的,外框 小方塊 物件 完全不閃,而且它的物件, 也是在拉動時 會一直更新的內容的 這問題困擾很久了..各位指點一下,感恩啦~~~ |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
可以利用一個暫存圖(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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |