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

像小畫家的功能一樣

答題得分者是:RaynorPao
kraen4468
初階會員


發表:66
回覆:112
積分:35
註冊:2003-12-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-05 14:54:10 IP:61.222.xxx.xxx 未訂閱
我想寫可以像小畫家一樣可以按左滑鼠就一直畫到沒按為止 我找了很多之前類似的文章都是一條一條直線沒辨法隨意的 畫 ~我還在學習狀態希望多多向您學習~ 發表人 - taishyang 於 2004/02/05 17:11:11
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-05 15:35:23 IP:203.73.xxx.xxx 未訂閱
引言: 我想寫可以像小畫家一樣可以按左滑鼠就一直畫到沒按為止 我找了很多之前類似的文章都是一條一條直線沒辨法隨意的 畫 ~我還在學習狀態希望多多向您學習~
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-05 15:41:54 IP:61.63.xxx.xxx 未訂閱
引言: 我想寫可以像小畫家一樣可以按左滑鼠就一直畫到沒按為止 我找了很多之前類似的文章都是一條一條直線沒辨法隨意的 畫 ~我還在學習狀態希望多多向您學習~
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-06 13:53:56 IP:61.222.xxx.xxx 未訂閱
我發現有一種更好用的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;       
}
在快速移動時不會變一角一角的哦 ~我還在學習狀態希望多多向您學習~
系統時間:2024-05-18 23:39:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!