Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PNG mit Alphakanal auf Transparente Form/Canvas (https://www.delphipraxis.net/157509-png-mit-alphakanal-auf-transparente-form-canvas.html)

Memnarch 14. Jan 2011 10:31

PNG mit Alphakanal auf Transparente Form/Canvas
 
Tag allerseits. Habe imo nen kleines Problem.

Ich habe eine PNG datei mit eigenem Alphachannel, die ich gerne auf dem Desktop zeigen wollte(und halt auch per programm verschieben etc). Da es ja nun eine heikle sache ist direkt auf den desktop zu zeichnen, entschloss ich mich meine MainForm auf Dekstopgröße zu ziehen und die transparenz eigenschaften zu konfigurieren so dass die Form nicht sichtbar ist.

PROBLEM: wenn ich darüber nun die PNG grafik mit dem alphachannelö zeichne, Werden die stellen des Canvas an der die PNG datei klept wieder undurchsichtig.

Gehen wir davon aus die form hat die Farbe clFuchsia und selbige ist als transparenz gesetzt und die PNG grafik enthält einen Gradient von schwarz nach transparent dan sehe ich an den stellen wo ich die PNG datei hingezeichnet habe auch die Farbe clFuchsia(bzw so eine ähnliche, ist ja wegen dem gradient leicht verfärbt und deswegen wird sie nicht mehr erkannt).

Der Gradient dient nur als beispiel, aber generell möchte ich grafiken mit alpha transparenz zeichen und an den Transparenten stellen den desktop sehen.(alles andere von der applikation sollte nicht sichtbar sein). Die grafik sollte auch mehrmals(20mal) neugezeichnet werden können ohne den PC abzuwürgen, weswegen manuelle dinge wie scanline wohl nicht in frage kommen.(außerdem möchte ich es partou vermeideneinen screenshot fom desktop als backuplösung zu nutzen, da ich den richtigen desktop sehen möchte)

Joar und das ist so der stein über den ich gestürtzt bin :(.
Gibt es da eine Buildin lösung(also etwas dass mit den hauseigenen komponennten geht) oder gibt es vllt dritanbieter bibliotheken die so einen "hokuspokus"^^ unterstützen?(vllt Graphics32? das habe ich noch nicht genutzt)

MFG
Memnarch

xaromz 14. Jan 2011 10:58

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
Hallo,

dafür gibt es die Function MSDN-Library durchsuchenUpdateLayeredWindow. Ein Tutorial, wie Du das mit PNGs umsetzen kannst, findest Du in meinem Tutorial Splashscreens.

Gruß
xaromz

Memnarch 14. Jan 2011 12:55

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
Danke für die Antwiort :)
Aber war es nicht so das UpdateLayeredWindow kein runtime perpixel alpha unterstützt sondern nur premultiplied?

MFG
Memnarch

xaromz 14. Jan 2011 13:02

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
Hallo,

ja, Du kannst die Alphawerte nicht mehr nachträglich ändern. Wenn Du das machen willst, musst Du jedesmal Dein PNG ändern und erneut UpdateLayeredWindow aufrufen.
Außerdem gibt es noch die Einschränkung, dass auf einem solchen Fenster Controls nicht funktionieren.

Gruß
xaromz

Bummi 14. Jan 2011 13:43

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
http://www.delphipraxis.net/155412-gdiclock-v1-4-a.html

Memnarch 14. Jan 2011 14:06

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
@Xaromath: Aber UpDateLayer window nimt den Alpha wert aus dem Alphachannel der PNG den ich z.B in Gimp habe ohne zusätzlichen hokuspokus?(dachte ich hätte da woanders was anderes gelesen, vonwegen zusätzlicher bitmask etc)

Und was die komponennten angeht: Ich brauche nur das perpixelalpha Png auf dem screen^^.

@Bummi: Danke, werde ich mir auch angucken.

EDIT: Ach kann man bei dem ersten beispiel über layerd die bitmap auch stretchen? also eine form nehmen die etwas größer ist und die bitmap trotzdem alles abdecken lassen?

MFG
Memnarch

Memnarch 15. Jan 2011 16:56

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
@Xaromnz: Dein Tutorial war sehr hilfreich :)
Aber eine Frage hätte ich da noch. Du Sagtest du hättest die GDI+ Bibliothek von Prodgidy leicht verändert. Was wurde den verändert?


MFG
Memnarch

xaromz 15. Jan 2011 17:22

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
Hallo,

eigentlich hab ich die Bibliotheken nur etwas erweitert, z. B. um eine Methode zum Zeichnen abgerundeter Ecken.

Gruß
xaromz

Memnarch 15. Jan 2011 18:52

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
Asü :)

Dein tut hat total geholfen :)
Habe die funktionen Loadimagefromfile und GPImageToBitmap so verändert dass man damit nicht jedesmal nen neues bitmap object produziert^^.
Die laden das jetzt in eine übergebene bitmal, geht besser und schneller :D.

Und jtzt noch wofür ich das ganze brauche:

Ich bastel gerade aus spass am vergnügen den Touhou - BadApple screensaver nach :). Klappt super. Mitlayered window bekomm ich endlich den semitransparenten effekt asuber hin und es läuft auch nochn bissle schneller :D.

Da ich vorhabe den screensaver mal hochzuladen(wenn er fertig ist), lieber Xaromz, möchtest du unter "Einstellungen" des screensaver bei den credits mit vollem namen oder Nickname stehen :P. Benutze wiegesagt die funcktion GPImageToBItmap(stretched jetzt auch auf vollbild), und da du die geschrieben hast bzw ich teile deines codes benutze wäre dir nen Platz unter den Credits doch ganz angebracht oder?^^

MFG
Memnarch

xaromz 15. Jan 2011 18:57

AW: PNG mit Alphakanal auf Transparente Form/Canvas
 
Hallo,

über Credits freu ich mich immer. Ob Du da den Nick oder meinen Namen nennst, ist mir aber egal. Schön, dass alles klappt!

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 Uhr.
Seite 1 von 2  1 2      

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