Hallo, ich möchte von einem geladenen Bild (Image.FromFile) die KOMPLETTE Transparenz ändern, nicht nur die Hintergrundfarbe, wie z.B. bei Gif, bei dem eine Farbe für den Alphakanal zuständig ist.
Wie mache ich also ein Bitmap.Opacity = 50 oder Image.Opacity = 50?
Wenn keine andere Lösung bekannt ist, werde ich wohl die LowLevelGraphicsLibrary benutzen und für jeden Pixel dessen Transparenz ändern, bzw. vielleicht geht das ja auch schon für die Farbpalette (System.Drawing.Imaging.ColorPalette).
Oder habe ich bei der Suche im Forum tatsächlich die Lösung übersehen?
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Ok, werde auch vielleicht das hier ausprobieren:
PNGs transparent machen und überlagern
Ich werde aber trotzdem mal die Version mit meiner LowLevelGraphicsLibrary kreieren und dann hier posten.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Du kannst ja auf jedes einzelne Pixel zugreifen. Dann kanst du den Alfakanal einstellen.
Gruß pdelvo
Hab mal dieses Snippet benutzt.
Funzt gut!
public static Image SetOpacity(Image original, float opacity)
{
Bitmap temp = new Bitmap(original.Width, original.Height);
Graphics g = Graphics.FromImage(temp);
System.Drawing.Imaging.ColorMatrix cm = new System.Drawing.Imaging.ColorMatrix();
cm.Matrix33 = opacity;
System.Drawing.Imaging.ImageAttributes ia = new System.Drawing.Imaging.ImageAttributes();
ia.SetColorMatrix(cm, System.Drawing.Imaging.ColorMatrixFlag.Default, System.Drawing.Imaging.ColorAdjustType.Bitmap);
g.DrawImage(original, new Rectangle(0, 0, temp.Width, temp.Height), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel, ia);
g.Dispose();
return temp;
}
(Quelle: http://dotnet-snippets.de)
~ There's no knowledge that is not power~
Hat funktioniert.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.