Transparenz!

The place for threads about TimoSoft Animation.
Post Reply
seniorchef
Cadet
Posts: 4
Joined: 28 Aug 2012, 09:38

Transparenz!

Post by seniorchef »

Hallo, Timo!
Gratulation zu deinen Controls - so etwas suche ich schon seit langem.
Ich bin dabei, verschiedene Controls in mein VB6-Projekt zu übernehmen - zuerst das Animations-Control wg. der Transparenz.
Das klappt auch ganz gut, so lange der Hintergrund der Form in der Picture-Eigenschaft liegt.
Ich erzeuge den Hintergrund aber, indem ich Bitmaps per PaintPicture kachele. Offen gestanden, ich weiss nicht, wie ich diese Hintergründe und die Transparenz zusammenbringe.
User avatar
TiKu
Administrator
Administrator
Posts: 832
Joined: 28 Sep 2004, 21:10
Location: München
Contact:

Re: Transparenz!

Post by TiKu »

Hi,

ich werde mal schauen, ob ich eines der Beispiele entsprechend modifizieren kann. Das kann aber ein paar Tage dauern, da ich wochentags kaum Zeit für sowas habe.

Grüße
TiKu
Crunching for Fab36_Folding-Division at Folding@Home. Join Fab36/Fab30! - Folding@Home and BOINC
Boycott DRM! Boycott HDCP!
User avatar
TiKu
Administrator
Administrator
Posts: 832
Joined: 28 Sep 2004, 21:10
Location: München
Contact:

Re: Transparenz!

Post by TiKu »

Im Grunde ist das ganz einfach, da das Beispiel "Transparent Background" intern schon so ziemlich das selbe macht. Letztlich muss nur in HandleMessage_Form die Nachricht WM_CTLCOLORSTATIC geringfügig anders behandelt werden. Das Beispiel erzeugt sich mit CreateCompatibleDC einen DC (hDialogBkDC) und lädt dort mit SelectObject die Hintergrundtextur rein. Dann kopiert es mit BitBlt den passenden Ausschnitt in den Ziel-Device (hAnimBkDC).
Diese 3 Zeilen müssen geändert werden. Statt Me.Picture.Handle müsstest du entweder das fertig gekachelte Bild laden (Variante A) oder aber eine einzelne Kachel (Variante B). Bei Variante A kann das BitBlt so bleiben, bei Variante B müsste man stattdessen in einer Schleife BitBlt mehrfach aufrufen und das Bild quasi "live" kacheln (Schwierigkeit hierbei: Offset korrekt berechnen, sodass Fälle abgedeckt werden, wo die linke obere Ecke des zu zeichnenden Bereichs mitten auf einer Kachel liegt).
Probier mal selbst, ob du es hinbekommst. Ansonsten baue ich spätestens am Wochenende ein Beispiel. Dafür wären aber eine von dir verwendete Kachel sowie der genaue Aufruf von PaintPicture hilfreich.

Ach ja, du zeichnest ein und das selbe Bild mehrfach neben- und untereinander und nicht verschiedene Bilder, richtig?
Crunching for Fab36_Folding-Division at Folding@Home. Join Fab36/Fab30! - Folding@Home and BOINC
Boycott DRM! Boycott HDCP!
seniorchef
Cadet
Posts: 4
Joined: 28 Aug 2012, 09:38

Re: Transparenz!

Post by seniorchef »

Hi, Timo!
Ein spätes Danke für deine ausführliche Antwort - war gestern überhaupt nicht am Rechner!
In der Theorie verstehe ich das Problem und deine Lösung - hab es auch schon so versucht zu lösen, aber mir fehlt offengestanden der technische Hintergrund bezgl. API und Windows-Messages, um das hinzukriegen. Ich versuche es aber jetzt nochmal mit deinen konreten Tips.
Ja, ein- und das selbst Bild wird neben- und untereinander ausgegeben, bis der Hintergrund gekachelt ist.
seniorchef
Cadet
Posts: 4
Joined: 28 Aug 2012, 09:38

Re: Transparenz!

Post by seniorchef »

Hallo, Timo!
Hab's in zwischen nochmal versucht - und es ist ganz einfach :oops:
Ich hatte Probleme, die Picture-Eigenschaft der Form mit dem gekachelten Inhalt zu füllen - das entspricht dann deiner Lösung A.
Ich muss nur die Form wie gehabt per PaintPicture vollkacheln und dann die magische Zeile 'Me.Picture = Me.Image" einfügen - und schon klappt's!
Danke nochmal für die Anregung!
Gruss
Seniorchef
User avatar
TiKu
Administrator
Administrator
Posts: 832
Joined: 28 Sep 2004, 21:10
Location: München
Contact:

Re: Transparenz!

Post by TiKu »

Ah, gut. Dann brauche ich doch kein Beispiel basteln.

Grüße
TiKu
Crunching for Fab36_Folding-Division at Folding@Home. Join Fab36/Fab30! - Folding@Home and BOINC
Boycott DRM! Boycott HDCP!
Post Reply