在《delphi基础教程》中,关于画直线有这样一段描述(
第五章 Delphi图形图像编程(二)):
================================================================
画直线时,用户只有在松开鼠标才能看见直线,对直线的变化不能进行实时观测。这是因为鼠标移动时程序没有进行某种应。Delphi
定义了OnMouseMove
事件来响应鼠标移动。以下代码可使用户随时观测直线的变化:
procedure TForm1.FormMouseMove(Sender:Tobject)
begin
Drowto(X,Y);
Moveto(origin);
end.
origin
是起始点。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这段代码太笼统,无法进行测试。经自己试验,可用下列代码实现:
var
Form1: TForm1;
Form1: TForm1;
nn:boolean;//开关标志,确定是否画线
implementation
implementation
{$R *.dfm}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Y: Integer);
begin
if nn then //如果按下鼠标,则在鼠标移动时画线
canvas.lineto(x,y);
canvas.lineto(x,y);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
nn:=true;//按下鼠标,置开关为真
canvas.MoveTo(x,y)
end;
Shift: TShiftState; X, Y: Integer);
begin
nn:=true;//按下鼠标,置开关为真
canvas.MoveTo(x,y)
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
nn:=false;//松开鼠标,则停画
Shift: TShiftState; X, Y: Integer);
begin
nn:=false;//松开鼠标,则停画
end;
end.
转载于:https://blog.51cto.com/gzkhrh/179524