将8 bpp的PNG添加到资源文件中。 如果您尝试使用它,例如:
Bitmap bmp = properties.Resources.My8bppImage;
bmp PixelFormat将是32 ARGB!但这是错误的,它应该是8 bpp索引。 如何获得正确的位图?
答案 0 :(得分:2)
这里没有很多选项,Visual Studio资源编辑器和Bitmap类都使用PNG解码器将图像转换为32bpp。这是有帮助的,32bpp渲染得很好而且很快。
后备选项是使用System.Windows.Media.Imaging.PngBitmapDecoder类。您可以将BitmapCreateOptions.PreservePixelFormat选项传递给它并强制它保持8bpp格式。您可以将png作为资源添加,首先将其重命名为.bin文件,这样它就不会尝试将其解释为图像文件,而是将其作为byte []。然后像这样的代码将起作用:
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.IO;
...
Stream stream = new MemoryStream(Properties.Resources.marble8);
PngBitmapDecoder decoder = new PngBitmapDecoder(stream,
BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];
“marble8”是我用过的测试图像,用你自己的替换。您需要添加对WindowsBase和PresentationCore程序集的引用。