AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Canvas verschwindet, wenn man mit Windowsfenster drüber geht
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas verschwindet, wenn man mit Windowsfenster drüber geht

Ein Thema von Delphi-Noobie · begonnen am 31. Dez 2004 · letzter Beitrag vom 2. Jan 2005
Thema geschlossen
Delphi-Noobie

Registriert seit: 28. Nov 2003
102 Beiträge
 
#1

Canvas verschwindet, wenn man mit Windowsfenster drüber geht

  Alt 31. Dez 2004, 21:13
hi,

ich bin grad dabei pacman zu proggen und hab das Problem, dass wenn ich auf dem Formular irgendetwas mit canvas gezeichnet habe und ein Object(Timage) oder einfach nur nen Windowsfenster drüber schiebe und es wieder wegnehme das gemalte weg ist. Gib es irgend ein anderes Canvas wo das nich auftritt?( es muss mit bitblt(); klappen)

Thx schonmal

Delphi-Noobie
Wieviel Lösungen hat die Gleichung x^13=1? .... 13!
 
Dax
(Gast)

n/a Beiträge
 
#2

Re: Canvas verschwindet, wenn man mit Windowsfenster drüber

  Alt 31. Dez 2004, 21:16
Eine Canvas ist nur eine Zeichenfläche. Sobald irgend etwas über dieser Fläche ist, wird der darunterliegende TEil der Bildinformation überschrieben und ist damit nicht mehr vorhanden. Du müsstest entweder mit PaintBoxen arbeiten, oder dafür sorgen, das kein Fenster über deine Canvas kommen kann
 
Joe24

Registriert seit: 21. Dez 2004
Ort: Berlin
51 Beiträge
 
#3

Re: Canvas verschwindet, wenn man mit Windowsfenster drüber

  Alt 31. Dez 2004, 22:02
Jedes Object mit visueller Oberfläche ist auch für diese selbst verantwortich.
d.h. muss diese zeichnen und auch wieder herstellen.
Das geschied in einer Methode, welche auf die Nachricht WM_Paint reagiert.
Normalerweise ist das die Procedure Paint.
In dieser muss das Aussehen des Objektes je nach Zustand definiert werden.
 
Delphi-Noobie

Registriert seit: 28. Nov 2003
102 Beiträge
 
#4

Re: Canvas verschwindet, wenn man mit Windowsfenster drüber

  Alt 31. Dez 2004, 22:27
hmm bei paintboxen klapt das auch net
Code:
bitblt(paintbox1.Canvas.Handle,50,50,70,70,image1.Canvas.Handle,0,0,srccopy);
liegt das jetzt nur an bitblt oder is das generell so?

@ Joe24 WIe geht das mit WM_Paint? Und dadurch kann man das verschwinden verhindern (z.B inna paintbox?)
Wieviel Lösungen hat die Gleichung x^13=1? .... 13!
 
Joe24

Registriert seit: 21. Dez 2004
Ort: Berlin
51 Beiträge
 
#5

Re: Canvas verschwindet, wenn man mit Windowsfenster drüber

  Alt 31. Dez 2004, 23:29
Die einfachste Variante:

Mal angenommen die Figuren werden direkt auf das Formular gezeichnet:

Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
  [Zeichne Hintergrund]
  [Zeichne Mauer o.ä.]
  [Zeichne Figur an stelle x,y]
  ...
end;
Vorteilhafter ist es für die Figuren eine eigene Klasse zu erstellen, z.b von TCustomControl
abgeleitet, die das Aussehen sowie das Verhalten definiert.
In dieser Klasse kann ebenfalls das OnPaint-Ereignis zum Zeichnen der Figuren
verwendet werden.
Auf dem Formular erzeugst du dann je nach Bedarf beliebig viele Instanzen dieser Klasse.
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Canvas verschwindet, wenn man mit Windowsfenster drüber

  Alt 1. Jan 2005, 15:35
Im OnPaint alles zu zeichnen ist nicht sehr sinnvoll. Grafische Ausgaben sind immer sehr langsam, zeichnest du viel wird das sehr unschön: Flackern, ausbremsen deines Programmes, ...

Warum das, was du auf dem Canvas zeichnest, wieder wge ist, nach dem ein naderes Fenster deins überdeckt hat, kannst du hier nachlesen. Am Ende vom Artikel steht auch eine Lösung deines Problems.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Delphi-Noobie

Registriert seit: 28. Nov 2003
102 Beiträge
 
#7

Re: Canvas verschwindet, wenn man mit Windowsfenster drüber

  Alt 1. Jan 2005, 19:48
oki das mit onpaint klappt aber da ich über die images mit einem gif-Bild rüber gehe sind die Ecken des Gif-Bildes nicht durchsichtig, wenn das bild nicht viereckig ist (ich verwnde die Tgifimage unit).
Gibts da auch son Befehl wie Setbkmode(); um den Rand durchsichtig zu machen?
Wieviel Lösungen hat die Gleichung x^13=1? .... 13!
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Canvas verschwindet, wenn man mit Windowsfenster drüber

  Alt 2. Jan 2005, 11:10
Bitte öffne einen neuen Thread bei einer neuen Frage. Ixch schließe mal hier, das das Problem wohl gelöst ist.

G S C H L O S S E N
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen


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 02:09 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