![]() |
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:
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?
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; MFG Lars Wiltfang |
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 |
Re: TRect wird nicht gezeichnet
ich würde mal
Delphi-Quellcode:
nich auf bsClear sondern auf bsSolid setzten :D
Image1.canvas.brush.style :=bsClear;
|
Re: TRect wird nicht gezeichnet
Zitat:
|
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!
|
Re: TRect wird nicht gezeichnet
Zitat:
Delphi-Quellcode:
auch einfach mal weglassen
image1.canvas.Pen.mode :=pmNotXor;
Zitat:
|
Re: TRect wird nicht gezeichnet
Dann sehe ich aber immernoch keine rote Linie die das Rechteck einrahmt!
|
Re: TRect wird nicht gezeichnet
Zitat:
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: |
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?
|
Re: TRect wird nicht gezeichnet
Man kann auch
![]() |
Re: TRect wird nicht gezeichnet
ICh habe jetzt wirklich keine Zeit das alles durchzulesen kann mir nicht bitte jemand sagen wie ich mein problem lösen kann?
|
Re: TRect wird nicht gezeichnet
Ich glaube, es geht los. Da schickt man einen Link zum Entwicklerhandbuch samt Suchbegriff und dann hat man "keine Zeit". :evil:
|
Re: TRect wird nicht gezeichnet
Zitat:
nur weil du auf den canvas zeichnest (egal ob rectangle oder ellipse) weiß der canvas noch lange nicht das an der stelle was ist, du musst dir die koordinaten von deinem rechteck solange merken solange du damit was machen willst. |
Re: TRect wird nicht gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt sieht man zwar die rote Linie aber es sieht so aus wie in dem Bild im Anhang!
|
Re: TRect wird nicht gezeichnet
Tja, da wird wohl jemand doch lesen müssen :mrgreen:
|
Re: TRect wird nicht gezeichnet
hier gab es mal ein Beispiel Projekt dazu. Such doch mal nach DrawFX glaube ich hieß das.
Das sollte deine Fragen klären. |
Re: TRect wird nicht gezeichnet
Zitat:
|
Re: TRect wird nicht gezeichnet
Ich verstehe gar nicht wo da das Problem liegt. Z.B. mein Paint2 Hier konnte auch sowas was du wolltest.
Evlt. hilft dir diese Schritt für Schritt Anleitung weiter: Ich gehe von einem neuen Projekt aus 01: Hintergrund Buffer anlegen 02: Eine PaintBox auf das From Plazieren 03: Im onPaint Event der PaintBox mit Paintbox1.canvas.Draw(0,0,buffer) alles auf die PaintBox kopieren 04: In MouswDown die geklickten Maus Position speichern 05: Bei MouseMove das Rect auf den Buffer zeichnen. Hier könntest den Buffer erstmal überzeichnen mit einem fillrect. Oder du zeichnest alles zweimal. Das überzeichnen ist aber sicherer ! 06: Fertig, wenn ich nix übersehen habe. Aber hier im Forum sollte es genügend Beispiele geben. Evlt. erstelle ich heute noch eins. Mal sehen. Aber schau dir mal DrawFX an oder mein Paint2 Projekt. Evlt. hilft dir das ja schon weiter. Irgendwo gab es auch mal ein klein Soruce-Code dazu. Wie man ein Paint erstellen kann. Ein MiniPaint. Aber den habe ich heute nicht gefunden, weil ich auch nicht mehr genau weiß wo es den gab :( |
Re: TRect wird nicht gezeichnet
Ich verweise nochmals auf
![]() |
Re: TRect wird nicht gezeichnet
und was machst du wenn du eine Hintergrund Grafik einbinden möchtest und darauf dann deine Objekte zeichnen möchtest ?
Ich habe schlechte Erfahrung gemacht. mit notXOR |
Re: TRect wird nicht gezeichnet
Ich habe mir die PDF Datei angesehene, ich meine auch im Delphi Demo Ordner müsste es schon ein Beispiel geben.
Die PDF Datei ist nicht schlecht. Auch wenn ich unter Lazarus bin, könnte sie hilfreich sein. Da ja vieles gleich oder ählich geht. Wie gesagt ich hattet mit pmNotXor schlechte Erfahrung gemacht. edit: EXAMPLES\DOC\GRAPHEX dort gibt es ein beispiel. |
Re: TRect wird nicht gezeichnet
Hi,
Du musst entweder das alte löschen oder über das alte noch mal mit pmNotXor drüber malen. Letzte Variante nutze ich und funktioniert 1a. |
Re: TRect wird nicht gezeichnet
@DeddyH: Leider fast schon sehr OT:
Zitat:
:wall: Mit dem Nichtkapieren/Nichtwissen um (T)Frames entgehen mir bestimmt viele Vereinfachungen unter D5! @DeddyH: Frames und FrameSets kenne ich bislang nur von HTML. Könntest Du mir da(zu) eine Parallele zu Delphis (T)Frames "erklären", falls die beiden gleichnamigen Bezeichnungen überhaupt vergleichbar sind? :cheers: ? |
Re: TRect wird nicht gezeichnet
Was hat das mit Larsis Post zu tun?
Mach doch eine neue Frage zu TFrames auf ;) |
Re: TRect wird nicht gezeichnet
Zitat:
(Edith hat etwas Schwachsinn entfernt) |
Re: TRect wird nicht gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
...
|
Re: TRect wird nicht gezeichnet
ich hab schon wieder das Gefühl, dass viele keinen Bock haben, zu suchen...
![]() mal abgesehen von der immer wieder anzutreffenden, abartigen Idee, auf einem TImage zu zeichnen... Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 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