Wenn du dir mal die Werte genau angesehn hättest, dann wäre dir aufgefallen, das der Strich nicht nach oben, sondern nach unten verläuft (von der unteren Kante).
z.B. so geht es
Code:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var Punkt : TPoint;
Steigung : TPoint;
z : byte;
begin
with Form1.canvas do
begin
Punkt.X := X;
Punkt.Y := Y;
Steigung.X := Punkt.X - Form1.width div 2;
Steigung.Y := Punkt.Y - Form1.Height;
Pen.Width := 3;
for z := 0 to 9 do
begin
Pen.color := clblack;
MoveTo((Form1.Width div 2)+((Steigung.X div 10)*z),Form1.height[color=red][b]+[/b][/color]((Steigung.Y div 10)*z));
LineTo((Form1.Width div 2)+((Steigung.X div 10)*(z+1)),Form1.height[color=red][b]+[/b][/color]((Steigung.Y div 10)*(z+1)));
Application.ProcessMessages;
sleep(100);
Pen.Color := clbtnface;
MoveTo((Form1.Width div 2)+((Steigung.X div 10)*z),Form1.height[color=red][b]+[/b][/color]((Steigung.Y div 10)*z));
LineTo((Form1.Width div 2)+((Steigung.X div 10)*(z+1)),Form1.height[color=red][b]+[/b][/color]((Steigung.Y div 10)*(z+1)));
Application.ProcessMessages;
end;
end;
end;
oder so
Code:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var Punkt : TPoint;
Steigung : TPoint;
z : byte;
begin
with Form1.canvas do
begin
Punkt.X := X;
Punkt.Y := Y;
Steigung.X := Punkt.X - Form1.width div 2;
Steigung.Y := [color=red][b]Form1.Height - Punkt.Y[/b][/color];
Pen.Width := 3;
for z := 0 to 9 do
begin
Pen.color := clblack;
MoveTo((Form1.Width div 2)+((Steigung.X div 10)*z),Form1.height-((Steigung.Y div 10)*z));
LineTo((Form1.Width div 2)+((Steigung.X div 10)*(z+1)),Form1.height-((Steigung.Y div 10)*(z+1)));
Application.ProcessMessages;
sleep(100);
Pen.Color := clbtnface;
MoveTo((Form1.Width div 2)+((Steigung.X div 10)*z),Form1.height-((Steigung.Y div 10)*z));
LineTo((Form1.Width div 2)+((Steigung.X div 10)*(z+1)),Form1.height-((Steigung.Y div 10)*(z+1)));
Application.ProcessMessages;
end;
end;
end;