AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCanvas und Minimieren

Ein Thema von Delphibdiscover · begonnen am 12. Okt 2005 · letzter Beitrag vom 12. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
Delphibdiscover

Registriert seit: 7. Okt 2005
5 Beiträge
 
#1

TCanvas und Minimieren

  Alt 12. Okt 2005, 13:49
Hallo,

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

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.
  Mit Zitat antworten Zitat
Delphibdiscover

Registriert seit: 7. Okt 2005
5 Beiträge
 
#2

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 14:07
Also eines ist vielleicht nicht ganz klar. Ich minimiere und maximiere das Fenster, dann ist die Graphik ja weg.

Was kann ich dagegen tun?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 14:08
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 [/OT]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Delphibdiscover

Registriert seit: 7. Okt 2005
5 Beiträge
 
#4

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 14:36
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#5

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 14:45
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 15:07
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.
Andreas
  Mit Zitat antworten Zitat
Delphibdiscover

Registriert seit: 7. Okt 2005
5 Beiträge
 
#7

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 15:10
O.K. es ist mir immernoch nicht ganz klar.

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.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 15:19
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Delphibdiscover

Registriert seit: 7. Okt 2005
5 Beiträge
 
#9

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 15:35
Aah... Jetzt habe ich es!

Vielen Dank an alle!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: TCanvas und Minimieren

  Alt 12. Okt 2005, 16:24
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 .
[/OT]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:45 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