AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TRect wird nicht gezeichnet
Thema durchsuchen
Ansicht
Themen-Optionen

TRect wird nicht gezeichnet

Ein Thema von Larsi · begonnen am 7. Aug 2008 · letzter Beitrag vom 8. Aug 2008
Antwort Antwort
Seite 1 von 3  1 23      
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#1

TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 10:39
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
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 10:57
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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Kalfany

Registriert seit: 28. Feb 2008
Ort: München
153 Beiträge
 
Delphi 2007 Professional
 
#3

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 11:00
ich würde mal Image1.canvas.brush.style :=bsClear; nich auf bsClear sondern auf bsSolid setzten
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#4

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 12:42
Zitat von Kalfany:
ich würde mal Image1.canvas.brush.style :=bsClear; nich auf bsClear sondern auf bsSolid setzten
Warum, das würde das Rechteck doch füllen und nicht nur den Umriss zeichnen (wenn ich mich nicht irre)
Thomas
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#5

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 12:51
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!
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Kalfany

Registriert seit: 28. Feb 2008
Ort: München
153 Beiträge
 
Delphi 2007 Professional
 
#6

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 13:27
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 image1.canvas.Pen.mode :=pmNotXor; auch einfach mal weglassen



Zitat von Codewalker:
Zitat von Kalfany:
ich würde mal Image1.canvas.brush.style :=bsClear; nich auf bsClear sondern auf bsSolid setzten
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
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#7

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 13:29
Dann sehe ich aber immernoch keine rote Linie die das Rechteck einrahmt!
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Kalfany

Registriert seit: 28. Feb 2008
Ort: München
153 Beiträge
 
Delphi 2007 Professional
 
#8

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 13:34
Zitat von Larsi:
Dann sehe ich aber immernoch keine rote Linie die das Rechteck einrahmt!
habs auch grad gemerkt

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
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#9

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 13:39
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?
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: TRect wird nicht gezeichnet

  Alt 7. Aug 2008, 13:39
Man kann auch hier mal schauen ("Gummiband-Effekt").
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 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