![]() |
Linien zeichnen
Hallo!
Nochmals ne Frage zu meinem Zeichenprojekt: Wenn ich eine Linie Zeichne, mache ich das so:
Delphi-Quellcode:
Nun hätte ich gerne, dass mir die Linie auch angezeigt wird, bevor ich den 2. Klick betätige und die Linie fix gezeichnet wird.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin i:=i+1; if i=1 then begin Form1.Image1.Canvas.MoveTo(X,Y); end; if i=2 then begin Form1.Image1.Canvas.LineTo(X,Y); i:=0; end; end; Ist das irgendwie möglich oder wird das zu kompliziert? DANKE! Michael |
Re: Linien zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe mal eben eine kleine Demo geschrieben. Kurz zur Funktionsweise: Intern gibt es 2 TBitmaps. Eines ist temporär, zeigt die "Live"-Linie an (gezeichnet im OnMouseMove) und dient als Zwischenspeicher. Das andere enthält die Ausgabe (gezeichnet im OnMouseDown). Das hat auch den großen Vorteil, dass du das Bild jederzeit speichern kannst mit OutputBmp.SaveToFile(). Es geht sicher auch schöner, aber es ist ein möglicher Weg zum Ziel. Grüße, Matze |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Object-Pascal / Delphi-Language" nach "Multimedia" verschoben.
|
Re: Linien zeichnen
WOW!
Dankeschön! :thumb: Nur bei folgenden Befehlen blicke ich noch nicht durch: 1.
Delphi-Quellcode:
2.
procedure TForm1.FormDestroy(Sender: TObject);
begin FreeAndNil(TmpBmp); FreeAndNil(OutputBmp); end;
Delphi-Quellcode:
:dp:
procedure TForm1.ShowBmp(Img: TImage; TmpImg: Boolean);
begin if TmpImg then Img.Canvas.Draw(0, 0, TmpBmp) else Img.Canvas.Draw(0, 0, OutputBmp) end; Gruß Michael |
Re: Linien zeichnen
Zitat:
|
Re: Linien zeichnen
Zitat:
Solche Perlen sind es, die den grauen Alltag versüßen. @3: Objekte sollte man nach Benutzung wieder freigeben. Solche, die zur Designzeit aufs Formular gelegt werden, werden automatisch freigegeben (so ist zumindest der Plan). Solche die man zur Laufzeit (dynamisch also) erzeugt, muss man selber freigeben. Zum Image.Canvas.Draw, also da empfehle ich entweder Englisch aufzufrischen, oder wirklich mal in die Hilfe zu schauen ;) Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 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 by Thomas Breitkreuz