Page 1 of 1

Transparenz!

Posted: 28 Aug 2012, 10:10
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.

Re: Transparenz!

Posted: 28 Aug 2012, 21:55
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

Re: Transparenz!

Posted: 29 Aug 2012, 20:55
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?

Re: Transparenz!

Posted: 30 Aug 2012, 07:13
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.

Re: Transparenz!

Posted: 31 Aug 2012, 08:49
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

Re: Transparenz!

Posted: 31 Aug 2012, 22:25
by TiKu
Ah, gut. Dann brauche ich doch kein Beispiel basteln.

Grüße
TiKu