Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 04:39

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 14, 2007 11:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Wenn du normale VCL Komponenten mit nem layered window benutzen willst kannst du das eh total vergessen, die sind einfach unsichtbar. (Aber müßten Input events erhalten). D.h. du müßtest das komplette Fenster in das Bitmap welches du als LayeredWindow verwendest zeichnen.

Am besten wäre es da denke ich gleich komplett auf Komponenten zu verzichten und alles (Mouse Events, etc.) selbst zu machen und dann jeweils das LayeredWindow Bitmap neu zeichnen.

Oder halt 2 Formulare benutzen, ein LayeredWindow für den Rand und ein normales Welches nicht transparent ist und normale Komponenten benutzt in der Mitte... kommt halt drauf an was alles möglich sein soll.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 14, 2007 17:19 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Nee Nee Nee...
ich hab das ganze so, dass meine Komponente die Komponenten auf dem Formular ausließt und dann geskinnt auf das PNG zeichnet...aber ich muss dann ja bei jedem MouseEvent usw. das ganze neu zeichnen...
und da hänge ich im Moment wie ich das am besten mach :?
Das ganze soll so werden dass ich einfach die Komponente aufs Formular zieh und schon ist das ganze geskinnt und sieht gut aus!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 16, 2007 11:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Das Formular sollte ja auf jedenfall die ganzen Mouse Events bekommen, also entweder WM abfangen oder MouseMove Event vom Formular anwenden. Dann gucken ob sich ne Komponente an diesem Punkt befindet und die entsprechenden CM_ Botschaften weiterleiten. Es gibt da u.a. eine ControlAtPos() funktion mit der du raus bekommst welche Komponente sich an ner Position befindet.

Das reine neu zeichnen sollte eigentlich nicht das Problem sein, das LayeredWindow müßte dafür schnell genug sein. Was natürlich ein Problem sein könnte ist wenn du bei jeder kleinen änderung das ganze Formular (also auch jede Komponente) neu zeichnen läßt. Das wird dann bei vielen Komponenten oder vielen Updates sehr langsam.

Ich habe ja ein komplettes menü auf Layered window basis programmiert, dabei habe ich das ganze so gelößt das ich mehrere buffer Bitmaps benutze. Für mein Menü hab ich dabei den kompletten Hintergrund und alle Menü Items in der normalen ansicht in zwei Bitmaps gespeichert. Erhält nun ein Menü Item durch ne Maus bewegung den Fokus so brauch ich den Hintergrund und die anderen Menü Items schonmal nicht neu zeichnen da das ganze in den buffer bitmaps drin hängt. Am Ende werden dann einfach Hintergrund, Menü Items und das geändertes Bitmap zusammenkopiert und damit wird das layered window geupdated. Vorteil ist das die Teile die sich nicht geändert haben in den kompletten Buffer Bitmaps drin sind und ich also wirklich nur das neu zeichnen muß was sich geändert hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: hi
BeitragVerfasst: Mi Mai 23, 2007 15:31 
Offline
DGL Member

Registriert: Mo Dez 25, 2006 17:58
Beiträge: 8
Wohnort: 99974 Mühlhausen
Es gibt auch die Möglichkeit, das Form komplett transparent zu machen (Farbe z.B. clfuchsia, und die Transparentfarbe ebenfalls so setzen.
Dann ist das Form nicht mehr zu sehen. Auf dem Form befindet sich ein TImage (alClient), in das ein png-Bild geladen wird. Das kann verschiedene Transparenzen haben und die sind auch voll wirksam.
Nur mal so als Anregung. Muss natürlich die Unit pngImages mit eingebunden sein.

_________________
Wer ist eigentlich General Failure und was macht der auf meiner Festplatte?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]