![]() |
Mit Maus zeichnen / malen
Hi all!
bin grad dabei ein Nachrichtensystem zu schreiben, mit dem man auf einem Touchscreen Nachrichten mit einem Stift schreiben kann. Hier ist auch mein Problem: Ich benutze eine TPaintbox, und im onMouseMove Event färbe ich den entsprechenden Pixel ein: PaintBox1.Canvas.Pixels[X,Y] := clRed; Allerdings entsteht dann beim Zeichnen keine durchgehende Linie, sondern es entstehen zwischen den einzelnen Pixeln lücken, die, wenn man die Maus schneller bewegt, entsprechend größer werden. Meine Frage: Is die TPainbox die falsche Komponente dafür, oder muß da ein Puffer eingebaut werden oder wie mach ich das ? :gruebel: Für ein paar Tips wär ich sehr dankbar, hab googel schon ne Weile genervt, aber leider ohne Erfolg :/ Danke schonmal, greets ben |
Re: Mit Maus zeichnen / malen
ist eigentlich nicht so schwer... ;O)
Benutz einfach die Befehle moveto und lineto Damit wird dann automatisch zwischen dem letzten und dem neuen Punkt ne Linie gezogen. |
Re: Mit Maus zeichnen / malen
Hi,
also wüßte nicht was das bringen soll ?? MoveTo bewirkt doch das selbe, wie wenn ich die PenPos setze. Und mit LineTo kann ich den Endpunkt angeben, wohin die Linie gezogen werden soll.
Delphi-Quellcode:
bewirkt genau das selbe wie:
PaintBox1.Canvas.MoveTo(X,Y);
PaintBox1.Canvas.LineTo(X+1,Y+1);
Delphi-Quellcode:
Oder hab ich nich kapiert worauf die hinaus willst?
PaintBox1.Canvas.Pixels[X,Y] := clRed;
Thx für eure Hilfe, greets Ben |
Re: Mit Maus zeichnen / malen
Delphi-Quellcode:
So war es gemeint. :)
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); private SollGezeichnetWerden, ErsterZug: Boolean; public end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ErsterZug) then begin ErsterZug := False; MoveTo(X, Y); end; if (SollGezeichnetWerden) then LineTo(X, Y); end; procedure TForm1.FormCreate(Sender: TObject); begin ErsterZug := True; end; end. |
Re: Mit Maus zeichnen / malen
Du sollst beim MouseDown ein MoveTo() machen und bei dem MouseMove() jeweils nur ein LineTo() zu den X, Y Koordinaten die du bekommen hast. Dann sind diese von dir beschriebenen Lücken weg, da er eine Linie zeichnet anstatt eine Lücke zu lassen.
/EDIT: Rote Box?? |
Re: Mit Maus zeichnen / malen
Danke Muetze, für diese Erklärenden Worte ;)
Dachte ich mir doch fast das ich es net geschnallt hab ^^ Ach und thx @ ste_ett für den eben geposteten Source :-D Thx a lot! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 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