Transparenz - Wie an die Pixel HINTER meinem Fenster kommen?
-
Wenn du so klug bist, dann frag nich hier im Forum!
-
Anti Aliasing schrieb:
dein rechteckiges Childfenster...
lol, Regions ?! Außerdem solltest du mal zwischen vollständiger und nur teilweiser Transparenz differenzieren.
Was willst du eigentlich machen ?
-
Natürlich Regions....ich wollte dir nur zeigen, dass als Transparentfarbe bei TransparentBlt die Hintergrundfarbe des Childfensters verwendet wird.
Ich möchte nun die Ränder des Fensters, welches mit Regionen begrenzt ist schön weich malen, wozu ich nunmal die Farbe der dahinter liegenden Pixel brauche...weiter nichts.
-
Anti Aliasing schrieb:
Natürlich Regions....ich wollte dir nur zeigen, dass als Transparentfarbe bei TransparentBlt die Hintergrundfarbe des Childfensters verwendet wird.
Ich möchte nun die Ränder des Fensters, welches mit Regionen begrenzt ist schön weich malen, wozu ich nunmal die Farbe der dahinter liegenden Pixel brauche...weiter nichts.
Ja...schon klar...aber du kannst dir nicht einfach den DC eines 'verdeckten' Fensters holen...siehe <Hier>
Außerdem wird das ne ganz schöne Rechnerei...würde mich stark wundern, wenn das flüssig läuft
.
-
Daher hab ich ja gefragt, was ihr machen würdet um die Transparenz zu berechnen...irgendwie muss es ja gehen...
Windows kanns ja auch. Es gibt ja die Möglichkeit Fenster zu einem bestimmten Prozentsatz transparent zu machen..also muss ich doch auch die Möglichkeit haben meine Childwindows an bestimmten Stellen nur teilweise transparent zu machen... Es ist leicht zu programmieren, dazu benötige ich leider aber die Farben, die hinter dem Fenster sind....

Keine Ideen?
-
Anti Aliasing schrieb:
Windows kanns ja auch. Es gibt ja die Möglichkeit Fenster zu einem bestimmten Prozentsatz transparent zu machen
Jo mit SetLayeredWindowAttributes(...) ...
>= Windows 2000Anti Aliasing schrieb:
..also muss ich doch auch die Möglichkeit haben meine Childwindows an bestimmten Stellen nur teilweise transparent zu machen... Es ist leicht zu programmieren, dazu benötige ich leider aber die Farben, die hinter dem Fenster sind....

Nein nicht unbedingt...: Siehe <Hier>
-
Problem bei SetLayeredWindowAttributes() ist: Man kann den Alpha-Wert nicht für jeden Pixel einzeln bestimmen sondern nur für das komplette Fenster.
Und Regions haben doch auch immer scharfe Kanten (sprich: Einfache Transparenz, keine Alpha-Transparenz um den Rand der Regions herum) oder irre ich mich da ?
Beides bringt imho gar nichts, denn er braucht ja mit Sicherheit Alpha-Transparenz quasi nur an den Kanten und will die Berechnung dafür ja momentan scheinbar selbst machen wofür er ja die Pixel unter seinem "Kantenbereich" braucht.
In meinen Augen lässt sich das nicht wirklich gescheit lösen.
Sagen wir mal die Pixeldaten hättest du und du hättest dir jetzt nen schönen geglätteten Rahmen gezeichnet - Was machst du wenn das Fenster unter dir eine Animation abspielt oder sich einfach schonmal ändert ? Du müsstest ständig die Pixel neu holen damit der Rahmen nich komisch aussieht. Vor allem wenn der Rahmen nicht rechteckig ist wird man das vermutl. sofort sehen wenn der Rahmen nicht mehr passt...
-
Das mit dem Layeredwindow bringt mir nichts, denn:
Es funktioniert nicht mit Childwindows.Eine Möglichkeit wäre WM_PRINT...dazu müsste man allerdings BeginPaint des darunterliegenden Fensters hooken etc... hach wie schön kompliziert... naja sonst wärs ja keine Arbeit

-
Hmm, ich bin mir nich mehr sicher ob ich weiss was du vorhast

Kannste evtl. nen Beispiel-Screenshot basteln oder so ?
-
Hi nochaml,
Hm wie wärs denn <damit> ?