2008-09-03 7 views
4

verwenden Gibt es eine Möglichkeit, diese Art von Format in .NET (C#) zu verwenden? Ich möchte das gleiche Skin-Format verwenden, das uTorrent in meiner App verwendet, aber ich kann den transparenten Hintergrund nicht erhalten. Irgendwelche Ideen? Danke für Ihre Zeit.Wie 32bit alpha-blended BMP in .Net

Antwort

2

Die Pixelformat-Enumeration listet die Formate von 'Bitmaps' Sie in .NET erstellen können, so würden Sie wollen PixelFormat.Format32bppArgb:

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.pixelformat.aspx

http://msdn.microsoft.com/en-us/library/3z132tat.aspx

aber ich bin nicht ganz Stellen Sie sicher, dass das BMP-Dateiformat Transparenz unterstützt. Sie müssen die Datei daher als PNG-Datei speichern.

+0

Sam ist korrekt. BMP unterstützt keinen Alphakanal. Transparenz in Bitmaps erfolgt normalerweise auf Chroma-Key-Weise (wählen Sie eine Farbe aus, um 100% transparent zu sein). PNG wird hier die optimale Wahl sein. –

3

Sie müssen zwei Dinge tun:

  • Kopieren Sie Ihre Bitmap auf das Formular als Hintergrund.
  • Rufen Sie das UpdateLayeredWindow (user32.dll) auf, um Alpha-Transparenz pro Pixel zu aktivieren.

Der Code ist ein liitle bisschen sperrig, aber hier ist eine sehr schöne Beispielanwendung mit Quellcode: Per Pixel Alpha Blend in C#

+0

danke, ich werde das versuchen –

2

Während das BMP-Format einen Alphakanal unterstützt, von Windows ignoriert. Glücklicherweise ist das Format ziemlich einfach und Sie können es lesen, indem Sie System.IO.BinaryReader verwenden und dann eine Drawing.Bitmap mit den Methoden LockBits und UnlockBits erstellen, um die Daten darauf zu schreiben.

Verwandte Themen