WPF BitmapImage нельзя сериализовать / добавить в файл ресурсов - PullRequest
1 голос
/ 07 июня 2011

почему я не могу добавить wpfImage типа BitmapImage / BitmapSource / ImageSource в файл ресурсов.

Да, он не сериализуем ... Так как я могу обойти это?Мне нужно поместить мои bitmapImages в файл ресурсов с программным доступом к ключу / значению.

   using (ResXResourceWriter writer = new ResXResourceWriter("TBM.Resource"))
   {
         writer.AddResource(fileExtension, wpfImage);
         writer.Generate();
    }

1 Ответ

1 голос
/ 07 июня 2011

Файлы Resx не были предназначены для использования с изображениями WPF. Они отлично работают с изображениями GDI, поэтому вы можете сохранить изображение в System.Drawing.Bitmap и добавить его в файл ресурсов.

var encoder = new PngBitmapEncoder();
using (var stream = new MemoryStream())
{
    // Write the WPF image to the stream
    encoder.Frames.Add(BitmapFrame.Create(wpfImage));
    encoder.Save(stream);

    // Rewind the stream
    stream.Position = 0;

    // Read the stream to a GDI image
    var bitmap = (System.Drawing.Bitmap)System.Drawing.Image.FromStream(stream);

    // Add the GDI image to the resource file
    writer.AddResource(fileExtension, bitmap);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...