Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Rechteck zeichnen (https://www.delphipraxis.net/117510-rechteck-zeichnen.html)

Larsi 19. Jul 2008 16:18

Re: Rechteck zeichnen
 
Ok, jetzt bin ich schon mal wieder ein Stück weiter aber es klappt nicht. Mein Code jetzt ist:
Delphi-Quellcode:
procedure TForm16.FormCreate(Sender: TObject);
begin
  image1.canvas.Pen.mode :=pmNotXor;
  image1.canvas.pen.style:= psDot; //Gepunktete Linien
  image1.canvas.pen.color:=clRed;
end;

procedure TForm16.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin

Image1.canvas.brush.style :=bsClear;  //Für transparentes Quadrat
if shift = [ssleft] then       //Zeichnen mit linker Maustaste
  begin
    x1 := x;
    y1 := y;
rec := Rect(x1, y1, x2, y2);
    Image1.Canvas.DrawFocusRect(Rec);
  end;
if shift =[ssright] then     //Quadrat löschen mit rechter Maustaste
  image1.canvas.rectangle(x1,y1,x2,y2);

end;

procedure TForm16.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin

 if shift = [ssleft] then begin
 Image1.Canvas.DrawFocusRect(Rec);
 x2 := x;
 y2 := y;  //Quadrat durch X-Verschiebung der Maus
  rec := Rect(x1, y1, x2, y2);
 Image1.Canvas.DrawFocusRect(Rec);
  end;
end;

Wenn ich jetzt aber ein Rechteck zeichnen will dann sehe ich nur Steifen im Bilder mehr nicht.

Die Muhkuh 19. Jul 2008 16:20

Re: Rechteck zeichnen
 
Debug durch und schau Dir mal die Werte an, die gezeichnet werden.

_frank_ 19. Jul 2008 16:51

Re: Rechteck zeichnen
 
vielleicht hilft dir diese Klasse von mir weiter...dort wird ein Rechteck "gezogen":
http://www.delphipraxis.net/internal...=909362#909362

HTH Frank

rollstuhlfahrer 19. Jul 2008 21:41

Re: Rechteck zeichnen
 
HI,

was macht denn bitte DrawFocusRect??
Delphi-Hilfe
Die Methode DrawFocusRect zeichnet ein Rechteck, wie es normalerweise fokussierte Objekte umgibt.


Um ein Rechteck zu zeichnen, würde ich den Aufruf von .Rectangle(Rect) verwenden. !Achtung! .Rechtangle ist eine überladene Funktion, die 1. mit 4 Integern aufgerufen werden kann und 2. mit einem Rechteck aufgerufen werden kann. Da Windows nur mit 4 Integer-Punkten arbeiten kann, wird intern die .Rectangle (1) aufgerufen.

Zu deinem Problem:
Zitat:

Zitat von Larsi
Kann ich einfach sagen Image1.Canvas.Rec(p1, p2, p3, p4) oder wie macht man das?

Rect.Top,
Rect.Bottom,
Rect.Left
und Rect.Right gibts da. Dies kann man dann in der richtigen Reihenfolge eingeben.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.
Seite 2 von 2     12   

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