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;
}
//--------------------------------------------------------------------