始点の追跡
線を描画する場合は,Origin フィールドを使って線の開始位置を追跡します。OnMouseDown イベントの発生位置を Origin に記録すれば,OnMouseUp イベントハンドラはこの Origin を参照して線の始点を特定できます。
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Drawing := True;
Canvas.MoveTo(X, Y);
Origin := Point(X, Y);{ 線の開始位置を記録 }
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.MoveTo(Origin.X, Origin.Y);{ ペンを始点に移動する }
Canvas.LineTo(X, Y);
Drawing := False;
end;
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Drawing = true; // 描画フラグをセット
Canvas->MoveTo(X, Y); // ペン位置を設定
Origin = Point(X, Y); // 線の開始位置を記録
}
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Canvas->MoveTo(Origin.x, Origin.y); // ペンを始点に移動する
Canvas->LineTo(X, Y); // PenPos から(X,Y)まで線を描画
Drawing = false; // 描画フラグをクリア
}
この変更を行うと,アプリケーションは最終的な線を描画できるようになりますが,中間的な動作は描画できません。「ラバーバンド」の機能がサポートされていないという点に注意してください。"