![]() |
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. |
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? |
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(
![]() [OT]Mann, waren das viele Bitmaps :mrgreen: [/OT] |
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? :?: |
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. |
Re: TCanvas und Minimieren
Zitat:
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. |
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. |
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.
|
Re: TCanvas und Minimieren
Aah... Jetzt habe ich es! :mrgreen:
Vielen Dank an alle! |
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:
auch in den OnPaint-Event-Handler deiner Paintbox schreiben, dann sollte es funktionieren.
BitBlt(PaintBox1.Canvas.Handle,0,0,Paintbox1.Width,Paintbox1.Height,
Bild.Canvas.Handle,0,0,SRCCOPY); [OT] Zitat:
[/OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 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