Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Frage zu getcursorpos (https://www.delphipraxis.net/13084-frage-zu-getcursorpos.html)

Obi-1-ip 10. Dez 2003 16:28


Frage zu getcursorpos
 
Jo hi ich wollte mal fragen was ich genau machen will wenn ich eine canvas habe auf der ich bei click ein rechteck zeichnen will!!!(das ganze ist für die schule :pale: :pale: :pale: :pale: :pale: :pale: )
danke für eure hilfe

Maximus 10. Dez 2003 16:48

Re: Frage zu getcursorpos
 
Also mit getcursorpos kenn ich mich nicht dabei, aber du könntest es ja mit der OnMouseDown MEthode lösen? (die gibt mit X und Y die Position des Mauszeigers an!)

Edit: Siehe unten ein Beispiel ;)

Lefko 10. Dez 2003 16:48

Re: Frage zu getcursorpos
 
Zitat:

Zitat von Obi-1-ip
...was ich genau machen will wenn ich eine canvas habe auf der ich bei click ein rechteck zeichnen will!!!

Ich glaube, du willst eine canvas haben auf der du bei click ein rechteck zeichen willst! :mrgreen:

Ne, Scherz beiseite...
Du willst ein Rechteck zeichnen, wenn du auf das Image klickst? Wie groß soll das Rechteck sein? Willst du das mit der Maus ziehen oder einfach nur hinzeichnen?

einfach zum zeichnen wäre sowas:

Delphi-Quellcode:
procedure TFormX.FormMouseDown(Sender: TObject; Button: TMouseButton;
                               Shift: TShiftState; X, Y: Integer);
begin
with ImageX.canvas do
  begin
   pen.color := clblack;
   brush.color := white;
   rectangle(x , y , x + 30 , y + 50);
  end;
end;
Ansonsten schau dir (wie dein titel) GetCursorPos(Point) mal an, damit kannst du ein Rechteck ziehen...


MfG Lefko. :coder:

Obi-1-ip 13. Dez 2003 11:04

Re: Frage zu getcursorpos
 
hmmm ziehen wäre geil ^^

wenn dus weist sag :D wenn nich nich schlimm ^^

F.W. 9. Jan 2004 18:45

Re: Frage zu getcursorpos
 
Ich habe gelernt, wenn man was beim geklickt halten zeichnen will (erstmal nur Oixel für Pixel), dann nimm die MouseMove Methode:
Delphi-Quellcode:
 if ssLeft in Shift then Image1.Canvas.Pixels[X, Y] := clblue;
Damit kannst du schonmal so zeichnen, jetzt müsste man noch eine Lösung für das Zeichnen eines Rechtecks finden... :gruebel:

Versuch's mal damit:
Hat zwar jetzt nicht's mit dem eben genannten ssLeft und shift zu tun, aber ist vielleicht für dich ganz hilfreich(für später mal?)
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 StartX := X;
 StartY := Y;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 Image1.Canvas.Rectangle(StartX, StartY, X, Y);
end;
Du musst als VarParameter der Form StartX, StartY als Integer deklarieren. Das Prinzip ist leicht, wenn die Maus gedrückt wird, werden StartX bzw -Y mit den X und Y Werten dieses Clicks belegt, und wird die Maus wieder losgelassen , wird ein Rechteck von StartX, bzw. -Y zum aktuellen X und Y gezeichnet.
Nachteil: Du siehst nicht den Rahmen, während du ziehst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 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