像小畫家的功能一樣 |
答題得分者是:RaynorPao
|
kraen4468
初階會員 發表:66 回覆:112 積分:35 註冊:2003-12-04 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我想寫可以像小畫家一樣可以按左滑鼠就一直畫到沒按為止 我找了很多之前類似的文章都是一條一條直線沒辨法隨意的 畫 ~我還在學習狀態希望多多向您學習~kraen4468 你好: 請參考以下的做法 ( class="code"> bool bDraw=false; int giX=0; int giY=0; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Panel1->DoubleBuffered=true; Image1->Canvas->Brush->Color=clWhite; Image1->Canvas->FillRect(Image1->ClientRect); } void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { bDraw=true; giX=X; giY=Y; } void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(bDraw) { Image1->Canvas->MoveTo(giX, giY); Image1->Canvas->LineTo(X, Y); giX=X; giY=Y; } } void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { bDraw=false; } void __fastcall TForm1::Button1Click(TObject *Sender) { Image1->Picture=NULL; Image1->Canvas->Brush->Color=clWhite; Image1->Canvas->FillRect(Image1->ClientRect); } -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
kwu
中階會員 發表:10 回覆:57 積分:58 註冊:2003-10-31 發送簡訊給我 |
引言: 我想寫可以像小畫家一樣可以按左滑鼠就一直畫到沒按為止 我找了很多之前類似的文章都是一條一條直線沒辨法隨意的 畫 ~我還在學習狀態希望多多向您學習~kraen4468你好: 請試試下面的方法 void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { static int priX,priY; if(Shift.Contains(ssLeft)) { if(priX == 0 && priY == 0) { priX = X; priY = Y; } this->Canvas->MoveTo(priX,priY); this->Canvas->LineTo(X,Y); priX = X; priY = Y; } } |
kraen4468
初階會員 發表:66 回覆:112 積分:35 註冊:2003-12-04 發送簡訊給我 |
我發現有一種更好用的CODE
bool bDraw; void __fastcall TForm1::Label2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { bDraw=true; Label2->Canvas->MoveTo(X, Y); //移到某個點按的時候移動(X,Y) } //-------------------------------------------------------------------- void __fastcall TForm1::Label2MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(bDraw) { Label2->Canvas->LineTo(X, Y); } //移動時是用線連起來 } //-------------------------------------------------------------------- void __fastcall TForm1::Label2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { bDraw=false; }在快速移動時不會變一角一角的哦 ~我還在學習狀態希望多多向您學習~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |