線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:932
推到 Plurk!
推到 Facebook!

滑鼠移動直線一端點,且有邊拉邊畫的效果。

尚未結案
jjoey.tw
一般會員


發表:29
回覆:19
積分:9
註冊:2004-11-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-03 12:57:57 IP:211.72.xxx.xxx 未訂閱
請問各位高手,我Image有一直線,使用滑鼠移動直線一端點,有邊拉邊畫的效果,可改變直線的長度。謝謝大家!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-13 20:50:01 IP:203.204.xxx.xxx 未訂閱
Hi~jjoey.tw 你的問題我寫一個小簡單的範例~請參考~以及矩形那個問題不知你解決了嗎? 順便將此範例修改~也一併POST上
//---------------------------------------------------------------------------
#include 
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int mouseDown;
int mouseMove;
int x1,x2,y1,y2,x3,y3,xc,yc;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//--------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 x1=X;   //這裡你可修改成抓取你原本存在的直線端點(X軸)做起點
 y1=Y;   //同上抓y座標
         //或詳細判別該劃線時的條件~,成立後mouseDown給1作畫線的準備
 mouseDown=1;
}
//--------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 if(mouseDown==1&&mouseMove==0)
 {
 Image1->Canvas->Pen->Color=clRed;
 Image1->Canvas->MoveTo(x1,y1);
 Image1->Canvas->LineTo(X,Y);
 xc=X;
 yc=Y;
 }
 mouseMove=1;
 if(mouseDown==1&&mouseMove==1)   //先進行畫面清除乾淨的動作,再繼續做畫
 {
 Image1->Canvas->Pen->Color=clWhite;
 Image1->Canvas->MoveTo(x1,y1);
 Image1->Canvas->LineTo(xc,yc);
 Image1->Canvas->Pen->Color=clRed;
 Image1->Canvas->MoveTo(x1,y1);
 Image1->Canvas->LineTo(X,Y);
 xc=X;
 yc=Y;
 }
}
//--------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
 Image1->Canvas->Pen->Color=clRed;       
}
//--------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 mouseDown=0;
 mouseMove=0;
 x1=X;
 y1=Y;
}
//--------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
  mouseDown=0;
}
//--------------------------------------------------------------------
jjoey.tw
一般會員


發表:29
回覆:19
積分:9
註冊:2004-11-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-14 10:55:16 IP:211.72.xxx.xxx 未訂閱
rogan321, 謝謝,我的問題及矩形問題都解決,我是用TShape解決的。
系統時間:2024-05-11 16:47:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!