![]() |
Linie Zeichnen und Verschiebbar machen - Richtiger Anstatz ?
Hi,
ich möchte eine Linie zeichen, die anschließend wenn man sie anklickt verschiebbar ist... die Linie zeichen ist soweit kein problem - aber nun meine Frage wie geht man am besten vor, um die Linie durck anklicken bewegbar zu machen ? Ich könnte jetzt natürlich prüfen ob der mouseclick auf der position der Linie stattfindet, diese dann löschen und anhand der Bewegung der Mouse neu zeichnen... aber ich Frage mich ob es hierzu nicht elegantere Lösungen oder Komponenten zur Lösung für so ein Problem gibt.. Danke für Tips Ralf P.S: hier mein Ansatz zum Liniezeichen
Delphi-Quellcode:
var
Form1: TForm1; x1, y1, x2, y2 : longint; dopaint : boolean; implementation {$R *.dfm} procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin x1:=x; x2:=x; y1:=y; y2:=y; dopaint:=true; end; procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if dopaint=true then begin // alte Linie löschen canvas.MoveTo(x1,y1); Canvas.LineTo(x2,y2); x2:=x; y2:=y; // neue Linie zeichnen canvas.MoveTo(x1,y1); Canvas.LineTo(x,y); end; end; procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin dopaint:=false; end; procedure TForm1.FormCreate(Sender: TObject); begin canvas.Pen.Mode:=pmNotXor; end; |
Re: Linie Zeichnen und Verschiebbar machen - Richtiger Ansta
Zitat:
Delphi-Quellcode:
dopoint ist bereits eine boolean-Variable.
if dopaint then begin
zum Thema: ich würde es so machen dass du den (komplexen?) Hintergrund in einer Bitmap-Variable hast und dann bei Mausbewegung wenn dopaint aktiviert ist das Bitmap neu auf den Canvas drawst und die Linie dann nächträglich hinzufügst. Achtung: im onpaint-Ereigniss des Forms musst du das Bitmap auch drawen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz