AGB  ·  Datenschutz  ·  Impressum  







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

Transparente Komponente(n).

Ein Thema von C-Mon · begonnen am 6. Mär 2006 · letzter Beitrag vom 8. Mär 2006
Antwort Antwort
C-Mon

Registriert seit: 6. Mär 2006
4 Beiträge
 
#1

Transparente Komponente(n).

  Alt 6. Mär 2006, 17:59
Ich habe zur Zeit ein kleineres Problem bei der Erstellung einer VCL Komponente. Bzw einer Basisklasse für diese und weitere Komponenten.
Bis jetzt habe ich mich damit durchgeschlagen die Farbe der Parent Komponente als Hintergrund zu verwenden und darauf meine eigene zu zeichnen. Dies reicht aber nicht mehr aus. Ich bräuchte das eigentliche Bild hinter dieser Komponente (Für Alpha-Blending und solche Späße).

Ich habe mir ein Paar Gedanken gemacht und bin bis jetzt noch auf kein Sinnvolles Ergebnis gekommen. (verzeiht mir meine unwissenheit was das w32 SDK angeht Gibt es eine Möglichkeit das Bild hinter der Komponente zu bekommen, am besten möglichst effizient.

Also bevor jetzt der Vorschlag kommt ich solle doch einfach ein Stück aus dem Parent Canvas rauskopieren (den hab ich schon von Kollegen gehört): Das reicht mir leider nicht. Das würde nur für Komponenten funktionieren die direkt auf diesen Canvas zeichnen (sprich TGraphicsControl und seine bösartigen Kinder). Ich bin aber ganz gierig und möchte auch alle CustomControls und deren Freunde haben.

Habe mir noch überlegt bei Runtime zu überprüfen welche Komponenten sich hinter der vermeidlichen Komponente befinden und aus deren Canvas-Schatz zu kopieren. Aber das würde natürlich wieder Probleme bei der Ordnung geben und scheint mir als etwas zu ineffizient.

Ich kann wirklich nur hoffen dass hier jemand einen tollen Einzeiler (natürlich geb ich mich auch mit einem 20 Zeiler oder 5.000.000 Zeiler zufrieden. Solange es funktioniert ) kennt der mir aus der Patsche hilft. Ansonsten muss ich mich wohl mit Möglichkeit Zwei abfinden.
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#2

Re: Transparente Komponente(n).

  Alt 6. Mär 2006, 18:26
HiHo,

eine ähnliche Problemstellung haben wir hier erörtert. Vieleicht findest du da ja eine zufriedenstellende (oder zumindest informative) Antwort auf deine Frage.

MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
C-Mon

Registriert seit: 6. Mär 2006
4 Beiträge
 
#3

Re: Transparente Komponente(n).

  Alt 6. Mär 2006, 19:13
Ich will jetzt nicht undanbar erscheinen, aber das Topic ist wirklich nicht sonderlich hilfreich. Eine Lösung für mein Problem finde ich dort leider nicht.
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#4

Re: Transparente Komponente(n).

  Alt 6. Mär 2006, 19:39
Aber die Antwort, dass dein Problem quasi nicht lösbar ist. Und wenn du es dennoch versuchen möchtest, so sagt SirThornberry, dass du dir WS_EX_TRANSPARENT näher beaugapfeln solltest.

MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
C-Mon

Registriert seit: 6. Mär 2006
4 Beiträge
 
#5

Re: Transparente Komponente(n).

  Alt 6. Mär 2006, 20:30
Ich wünschte dass ich das Problem mit ein paar hundert Gramm Sprengstoff lösen könnte
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Transparente Komponente(n).

  Alt 7. Mär 2006, 05:51
Ist es eigentlich eine TWinControl oder eine TGraphicControl?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Transparente Komponente(n).

  Alt 7. Mär 2006, 07:52
der aktuelle Stand den ich zur als letztes Komponentenmäßig umgesetzt war das ich von TCustomControl abgeleitet hab und mit einem OffScreenBitmap arbeite was ich per Read-Property ins Public setze.

Wenn darauf ein weiteres Panel meines Types ist fragt das in seinem Paint ab ob der Parent vom Typ XYZ ist und wenn dem der Fall ist wird vom Parent mit "TXYZ(Parent).OutBmp" das Bild vom Parent abgefragt und dann für Blending etc. weiter verwendet.

Aber bei diesem System wird eben vorrausgesetzt das du so ziemlich alle Komponenten die andere Komponenten aufnehmen können selbst schreiben musst (also eigenen Paneltyp) und die Komponenten die Transparenz unterstützen sollen musst du auch selbst schreiben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Transparente Komponente(n).

  Alt 7. Mär 2006, 08:11
Transparenz bei einer TWinControl ist durchaus moeglich. Man muss dann aber mit Regions arbeiten. Die JCL enthaelt dazu eine Funktion.
Aufpassen muss man allerdings dann auch mit dem Hittest, damit die Loecher im Fenster noch als zum Fenster gehoerend behandelt werden.
  Mit Zitat antworten Zitat
C-Mon

Registriert seit: 6. Mär 2006
4 Beiträge
 
#9

Re: Transparente Komponente(n).

  Alt 8. Mär 2006, 21:14
Habe es mit WS_EX_TRANSPARENT versucht. Allerdings hat mir das Flackern nicht sonderlich in den Kram gepasst. Und Double Buffering hat Windows nicht hinbekommen.

Habs jetzt mit einer Master-Komponente geregelt die alle auf dem Formular liegenden Komponenten in Reihenfolge der Sichtbarkeit direkt auf das Formular zeichnet anstatt in das eigene Fenster.

Hab so keinen wesentlichen Performanceunterschied. Aber eine besonders schöne Lösung ist es meiner Meinung nach nicht (Von der Codebasis her gesehen. Dem Benutzer wirds furchtbar egal sein).


Bin jetzt doch ein wenig enttäuscht von Windows "(Un)Fähigkeit" transparente Fenster zu ermöglichen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:14 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