Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Linie Zeichnen und Verschiebbar machen - Richtiger Anstatz ? (https://www.delphipraxis.net/61932-linie-zeichnen-und-verschiebbar-machen-richtiger-anstatz.html)

th_bone 28. Jan 2006 10:04


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;

ichbins 28. Jan 2006 10:58

Re: Linie Zeichnen und Verschiebbar machen - Richtiger Ansta
 
Zitat:

Delphi-Quellcode:
if dopaint=true then begin

schreib doch einfach:
Delphi-Quellcode:
if dopaint then begin
dopoint ist bereits eine boolean-Variable.

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 12:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz