![]() |
Zeichenprogramm erstellen: wie die Linien zeichnen?
Ich hab mir mal überlegt, einen kleinen Paint-Klon zu schreiben... Nunja, ich bin noch ziemlich am Anfang :roll:
Und zwar hab ich Probleme damit, Linien zu zeichnen. Ich hab mir überlegt, eine globale boolsche variable zu erstellen. Im OnMouseDown wird sie auf True gesetzt, im OnMouseUp auf False. Dann im OnMouseMove folgende Abfrage:
Delphi-Quellcode:
Nur ist mir das zu langsam. Wenn ich die Maus langsam bewege, wird ordentlich gezeichnet, bei schnelleren Bewegungen sieht man jedoch nur einzelne Punkte... Kennt jemand eine andere Möglichkeit dafür oder kann mir einen Tipp geben, um das ganze zu beschleunigen?
var
pt: Tpoint; begin if Zeichnen = true then begin pt := Mouse.CursorPos; Canvas.Pixels [pt.X-196, pt.y-145] := clBlack; end; end; |
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Hi,
Du kannst einfach Canvas.LineTo() und Canvas.MoveTo() benutzen. MoveTo() bewegt die Position unsichtbar (also das beim ersten Klicken machen) und LineTo() zeichnet dann den Strich. mfG mirage228 |
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Mit LineTo() hatte ich es auch schon versucht, mich hat da nur gestört, dass der immer unnötige Linien gemacht hat...
Aber auch mit MoveTo geht das nicht wirklich...
Delphi-Quellcode:
Wenn ich dann klicke und Maustaste gedrückt halte, passiert noch nichts. Wenn ich dann aber die Maus bewege, zeichnet mein Prog mir immer erst eine senktrechte Linie von unten bis zur Maus... :(
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var pt: TPoint; begin Zeichnen := true; Canvas.MoveTo (pt.X-196, pt.y-145); end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Zeichnen := false; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var pt: Tpoint; begin if Zeichnen = true then begin pt := Mouse.CursorPos; Canvas.LineTo (pt.X-196, pt.y-145); end; end; |
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Zeichne nicht im MouseMove, sondern merk dir den Punmkt im OnMouseDown und im OnMouseUp und im OnMouseUp zeichnest du dann auch.
|
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Zitat:
|
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Richtig,
da deine Frage war: Zitat:
|
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Zitat:
Gut, da hab ich mich doch wohl etwas fehlerhaft ausgedrückt... ich will ein "freies Zeichnen" erlauben. Das heißt, klicken, Maustaste gedrückt halten, Maus bewegen und damit was Zeichnen, Maustaste loslassen. Ich hoffe, man hat mich jetzt richtig verstanden ;) |
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Hi,
gib Deinem Form ne Boolsche Variable z.B. MouseIsDown, setz diese im OnMouseDown auf True, im OnMouseUp auf False. Im OnMouseDown gehst Du mit ![]() ![]() Gruß Stephan :dance: |
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Zitat:
|
Re: Zeichenprogramm erstellen: wie die Linien zeichnen?
Zitat:
Zitat:
Gruss, Fabian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 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