fluessig
Royal Blue
Hi,
ich möchte zwischen einem Punkt der beim MouseDown Ereignis festgelegt wird und der aktuellen Mausposition eine Linie ziehen. Mit folgendem Code gelingt dies auch, aber ich mal bei jeder Mausbewegung eine neue Linie ohne die alte zu löschen.
Wie bekomm ich die alte Linie wieder weg?
ich möchte zwischen einem Punkt der beim MouseDown Ereignis festgelegt wird und der aktuellen Mausposition eine Linie ziehen. Mit folgendem Code gelingt dies auch, aber ich mal bei jeder Mausbewegung eine neue Linie ohne die alte zu löschen.
Code:
//mdown wird global als Integer deklariert
procedure TForm1.FormCreate(Sender: TObject);
begin
mdown := -1;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mdown := 0;
GetCursorPos(CursorPos);
lbl_StartPos.Caption := Format('The cursor is at (%d, %d)', [CursorPos.X, CursorPos.Y]);
startX := CursorPos.X;
startY := CursorPos.Y;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
dc : hdc;
begin
if mdown = 0 then
begin
//Linie löschen?
GetCursorPos(CursorPos);
endX := CursorPos.X;
endY := CursorPos.Y;
//Linie zeichnen
dc := GetDc(0);
MoveToEx(Dc, startX, startY, nil);
LineTo(Dc, endX, endY);
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mdown := -1;
end;