Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TCanvas und Minimieren (https://www.delphipraxis.net/54850-tcanvas-und-minimieren.html)

Delphibdiscover 12. Okt 2005 13:49


TCanvas und Minimieren
 
Hallo,

habe noch nicht viel Erfahrung im Umgang mit Delphi, also bitte erstmal um einfache Antworten. :-D

Wie kann man es so machen, dass eine, mit TCanvas gezeichnete Graphik, nach dem Minimieren z.B. immernoch da ist, ohne dafür eine Extra-Prozedur zu schreiben. :?:

Vielen Dank schon mal im Vorraus.

Delphibdiscover 12. Okt 2005 14:07

Re: TCanvas und Minimieren
 
Also eines ist vielleicht nicht ganz klar. Ich minimiere und maximiere das Fenster, dann ist die Graphik ja weg.

Was kann ich dagegen tun?

Khabarakh 12. Okt 2005 14:08

Re: TCanvas und Minimieren
 
Der Inhalt der TPaintbox-Canvas (die nutzt du doch, oder?) ist nur bis zum nächsten Repaint zu sehen. Abhilfe schafft z.B. TImage, das das Bitmap in einem TBitmap(Hier im Forum suchenOffScreenBitmap) speichert, und so auch nach dem Repaint zu sehen ist.

[OT]Mann, waren das viele Bitmaps :mrgreen: [/OT]

Delphibdiscover 12. Okt 2005 14:36

Re: TCanvas und Minimieren
 
Danke für die Weiterleitung.

Ja, ich nutze die Paintbox.

Ich muss also eine TBitmap erstellen und die Graphik auf sie kopieren. Wenn es so richtig ist, muss ich das (leere) Bild von irgendwo laden oder einfadh als eine Variable deklarieren und erstellen? Oder wie muss der Quelltest lauten? :?:

himitsu 12. Okt 2005 14:45

Re: TCanvas und Minimieren
 
Na ganz einfach, du erzeigst ein TBitMap und mals ab jetzt immer dortrein (also nicht mehr direkt auf das TCanvas).

Und dann brauchst u nur noch nach dem Ändern des BitMaps diese auf das TCanvas kopieren.
Außerdem muß das BitMap im OnPaint-Ereignis deines TCanvas neu auf das TCanvas kopiert werden.

shmia 12. Okt 2005 15:07

Re: TCanvas und Minimieren
 
Zitat:

Zitat von Khabarakh
Der Inhalt der TPaintbox-Canvas (die nutzt du doch, oder?) ist nur bis zum nächsten Repaint zu sehen.

Dieser Repaint wird aber automatisch von Windows angestossen und das Event OnPaint wird abgefeuert.
Wenn man also sämliches Zeichnen aus dem Eventhandler von OnPaint durchführt, dann baut sich das Bild immer wieder neu auf.
Ich habe hierzu ein Demo-Prog. in der Schublade.

Delphibdiscover 12. Okt 2005 15:10

Re: TCanvas und Minimieren
 
O.K. es ist mir immernoch nicht ganz klar. :oops:

Deshalb möchte ich gleich zu Praxis übergehen.
Hier ist mein Quelltext:

[delphi]
Bild: TBitmap;
...
Bild:= TBitmap.Create;
...
Bild.Width:= 50;
Bild.Height:= 50;
with Bild.Canvas do begin
Brush.Style:= bsSolid;
Brush.Color:= clWhite;
fillRect(rect(0,0,50,50));
end;
BitBlt(PaintBox1.Canvas.Handle,0,0,Paintbox1.Width ,Paintbox1.Height,
Bild.Canvas.Handle,0,0,SRCCOPY);

Was fehlt hier? Außer einen Graphen natürlich. :)

P.S.: Bild.Free ist dann später beim Destroy.

jim_raynor 12. Okt 2005 15:19

Re: TCanvas und Minimieren
 
Du brauchst deine Zeichenfunktionen einfach nur im OnPaint Ereigniss der PaintBox zu machen. Dann wirds automatisch neugezeichnet und du brauchst nicht den Umweg über ein TBitmap zu gehen.

Delphibdiscover 12. Okt 2005 15:35

Re: TCanvas und Minimieren
 
Aah... Jetzt habe ich es! :mrgreen:

Vielen Dank an alle!

Khabarakh 12. Okt 2005 16:24

Re: TCanvas und Minimieren
 
:warn: Das ist aber gerade der Weg, den man nicht gehen sollte. Zumindest wenn du nun schon angefangen hast, es mit einem TBitmap zu lösen. Du musst nur noch das
Delphi-Quellcode:
BitBlt(PaintBox1.Canvas.Handle,0,0,Paintbox1.Width,Paintbox1.Height,
Bild.Canvas.Handle,0,0,SRCCOPY);
auch in den OnPaint-Event-Handler deiner Paintbox schreiben, dann sollte es funktionieren.

[OT]
Zitat:

Was fehlt hier? Außer einen Graphen natürlich.
Ein schließendes [delphi]-Tag :mrgreen: .
[/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.
Seite 1 von 2  1 2      

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