AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi PNG mit Alphakanal auf Transparente Form/Canvas
Thema durchsuchen
Ansicht
Themen-Optionen

PNG mit Alphakanal auf Transparente Form/Canvas

Ein Thema von Memnarch · begonnen am 14. Jan 2011 · letzter Beitrag vom 15. Jan 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 14. Jan 2011, 10:31
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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 14. Jan 2011, 10:58
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 14. Jan 2011, 12:55
Danke für die Antwiort
Aber war es nicht so das UpdateLayeredWindow kein runtime perpixel alpha unterstützt sondern nur premultiplied?

MFG
Memnarch
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 14. Jan 2011, 13:02
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 14. Jan 2011, 13:43
http://www.delphipraxis.net/155412-gdiclock-v1-4-a.html
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#6

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 14. Jan 2011, 14:06
@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

Geändert von Memnarch (14. Jan 2011 um 15:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#7

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 15. Jan 2011, 16:56
@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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 15. Jan 2011, 17:22
Hallo,

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

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#9

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 15. Jan 2011, 18:52
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 .

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 .

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 . 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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#10

AW: PNG mit Alphakanal auf Transparente Form/Canvas

  Alt 15. Jan 2011, 18:57
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
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