У вас не так много вариантов, и редактор ресурсов Visual Studio, и класс Bitmap используют PNG-декодер, который преобразует изображение в 32 бит / дюйм.Это должно быть полезно, 32bpp рендерит красиво и быстро.
Резервным вариантом является использование класса System.Windows.Media.Imaging.PngBitmapDecoder.Вы можете передать ему параметр BitmapCreateOptions.PreservePixelFormat и заставить его сохранить формат 8bpp.Вы можете добавить png в качестве ресурса, сначала переименовав его, скажем, в файл .bin, чтобы он не пытался интерпретировать его как файл изображения, а сделал его байтом [].Тогда код, подобный этому, будет работать:
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.