![]() |
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 |
AW: PNG mit Alphakanal auf Transparente Form/Canvas
Hallo,
dafür gibt es die Function ![]() ![]() Gruß xaromz |
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 |
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 |
AW: PNG mit Alphakanal auf Transparente Form/Canvas
|
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 |
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 |
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 |
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 |
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 06:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz