Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TRect wird nicht gezeichnet (https://www.delphipraxis.net/118403-trect-wird-nicht-gezeichnet.html)

Larsi 7. Aug 2008 09:39


TRect wird nicht gezeichnet
 
Hi,

ich versuche im Moment ein Rechteck namens Rec vom Typ TRect auf ein Image zu bekommen. Mein Ansatz lautet so:

Delphi-Quellcode:
procedure TForm16.FormCreate(Sender: TObject);
begin
  image1.canvas.Pen.mode :=pmNotXor;
  image1.canvas.pen.style:= psDot;
  image1.canvas.pen.color:=clRed;
end;
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Image1.canvas.brush.style :=bsClear;
if shift = [ssleft] then
  begin
    x1 := x;
    y1 := y;
      Cut.TopLeft.X := x1;
   Rec.TopLeft.Y := y1;
   Rec.BottomRight.X := x2;
   Rec.BottomRight.Y := y2;
 Image1.Canvas.DrawFocusRect(Rec);
  end;
end;
Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin

 if shift = [ssleft] then begin
 x2 := x;
 y2 := y;
     Rec.TopLeft.X := x1;
   Rec.TopLeft.Y := y1;
   Rec.BottomRight.X := x2;
   Rec.BottomRight.Y := y2;
 Image1.Canvas.DrawFocusRect(Rec);
  end;
end;
Wenn ich das jetzt aber versuche, also Maus drücken und gedrückt bewegen und dann loslassen dann flackert das Image ein bisschen aber ein Rechteck ist nicht zu sehen. Was mache ich denn falsch? Muss ich dem Rec irgendwie eine Farbe zum zeichnen oder so zuweisen, und wenn ja, wie?


MFG Lars Wiltfang

Keldorn 7. Aug 2008 09:57

Re: TRect wird nicht gezeichnet
 
Hallo

warum nimmst du drawfocusrect und nicht rectangle?

Farbzuweisungen gehen über canvas.pen.color (Malfarbe) und canvas.brush.color für Hintergrund, hast du ja auch schon verwendet.

In den Demos unter Doc/Graphex findest du auch ein gutes Beispiel, wie das mit dem Ziehen und anzeigen geht.

Gruß Frank

Kalfany 7. Aug 2008 10:00

Re: TRect wird nicht gezeichnet
 
ich würde mal
Delphi-Quellcode:
Image1.canvas.brush.style :=bsClear;
nich auf bsClear sondern auf bsSolid setzten :D

Codewalker 7. Aug 2008 11:42

Re: TRect wird nicht gezeichnet
 
Zitat:

Zitat von Kalfany
ich würde mal
Delphi-Quellcode:
Image1.canvas.brush.style :=bsClear;
nich auf bsClear sondern auf bsSolid setzten :D

Warum, das würde das Rechteck doch füllen und nicht nur den Umriss zeichnen (wenn ich mich nicht irre)

Larsi 7. Aug 2008 11:51

Re: TRect wird nicht gezeichnet
 
Egal ob bssolid oder bsclear gesetzt ist, der Umriss des Rechtecks ist nicht rot woran liegt das? Wenn man bssolid nimmt, dann sieht man wenigstens den Umriss des Rechtecks!

Kalfany 7. Aug 2008 12:27

Re: TRect wird nicht gezeichnet
 
Zitat:

Zitat von Larsi
Egal ob bssolid oder bsclear gesetzt ist, der Umriss des Rechtecks ist nicht rot woran liegt das? Wenn man bssolid nimmt, dann sieht man wenigstens den Umriss des Rechtecks!

das liegt an dem
Delphi-Quellcode:
image1.canvas.Pen.mode :=pmNotXor;
auch einfach mal weglassen



Zitat:

Zitat von Codewalker
Zitat:

Zitat von Kalfany
ich würde mal
Delphi-Quellcode:
Image1.canvas.brush.style :=bsClear;
nich auf bsClear sondern auf bsSolid setzten :D

Warum, das würde das Rechteck doch füllen und nicht nur den Umriss zeichnen (wenn ich mich nicht irre)

ich glaub du irrst dich :D

Larsi 7. Aug 2008 12:29

Re: TRect wird nicht gezeichnet
 
Dann sehe ich aber immernoch keine rote Linie die das Rechteck einrahmt!

Kalfany 7. Aug 2008 12:34

Re: TRect wird nicht gezeichnet
 
Zitat:

Zitat von Larsi
Dann sehe ich aber immernoch keine rote Linie die das Rechteck einrahmt!

habs auch grad gemerkt :mrgreen:

also Image1.canvas.brush.style :=bsClear; passt doch ... aber du darfst nicht DrawFocusRect nehmen sondern Rectangle denn für das DrawFocusRect gelten die farben nicht und es wird immer mit xor zum hintergrund gezeichnet (ist das gleiche wie im explorer wenn du datein markierst (zum ohne xp style))

Keldorn hatte also recht :thumb:

Larsi 7. Aug 2008 12:39

Re: TRect wird nicht gezeichnet
 
Aber wie kann ich das dann mit meinem Rec vom Typ Trec machen? Ich will ja mit dem Rechteck Rec anschließend noch was machen. Wenn ich das über Rectangle mache kann ich doch nicht genau auf das unbenannte Rechteck zugreifen oder?

DeddyH 7. Aug 2008 12:39

Re: TRect wird nicht gezeichnet
 
Man kann auch hier mal schauen ("Gummiband-Effekt").


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf