我正在尝试从非托管文件中加载一些图像,并遇到alpha版本无法通过的问题。我发现我可以通过这样做恢复alpha通道:
BitmapData bmData =
bmpSource.LockBits(
new Rectangle(0, 0, bmpSource.Width, bmpSource.Height),
ImageLockMode.ReadOnly, bmpSource.PixelFormat);
Bitmap dstBitmap =
new Bitmap(bmData.Width, bmData.Height, bmData.Stride,
PixelFormat.Format32bppArgb, bmData.Scan0);
bmpSource.UnlockBits(bmData);
当桌面设置为32位颜色时效果很好,但由于某些原因,当桌面设置为16位颜色时,bmpSource只是一个16位彩色图像,即使资源文件中的源图像实际上是32位图像使用alpha通道。如何将这些图像作为32位图像加载,alpha通道完好无损?是否有一种非托管方式来处理这个而不是依赖于C#Bitmap类?
答案 0 :(得分:0)
好的,我知道Image类(Bitmap类是其子类)不支持Bitmap alpha透明度(他们建议使用PNG或GIF代替)。坏消息是你将不得不创建自己的bmp加载器或在那里找到一个(我在C ++时代使用的那个似乎已经死了,现在已经消失或者我已经链接到它)。好消息是创建自己的:File Format
非常容易