Использование ресурсов изображений в WPF - PullRequest
2 голосов
/ 02 ноября 2010

Из того, что я видел, источником изображений WPF является объект BitmapSource, а изображения ресурсов читаются как растровые.Я легко нашел способ конвертировать изображения из формата Bitmap в формат BitmapSource, но я считаю, что запускать это преобразование каждый раз, когда мне нужно изображение, просто дорого с точки зрения производительности и потребления памяти (сами битмапы статичны, но я предполагаю,преобразование выделяет новый объект в памяти для BitmapSource).

Я думал о том, чтобы хранить в памяти ленивый кэш для объектов BitmapSource, поэтому мне нужно будет выполнить преобразование только один раз для каждого изображения.Однако мне трудно поверить, что это правильное решение для этой проблемы.

Природа приложения заключается в том, что данные расширяются со временем, а бизнес-объекты никогда не удаляются.Поэтому это предположение будет справедливо только в том случае, если реализация будет содержать статические ресурсы для этих статических изображений.

Я буду очень признателен за правильное решение для этой проблемы.

1 Ответ

2 голосов
/ 02 ноября 2010

Я не уверен, что понимаю, что вы имеете в виду, но вы можете использовать изображение из таких ресурсов, как это.
Если у вас есть ресурс Image с именем «B1.png» и вы установили для «Build Action» значение «Resource», вы можете использовать его в xaml следующим образом.

<Image Name="c_image" Source="/YourAssemblyName;component/Resources/B1.png" />

и в коде позади, как это

Image img = new Image();
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit(); 
bitmapImage.UriSource = new Uri("pack://application:,,,/YourAssemblyName;component/Resources/B1.png"); 
bitmapImage.EndInit(); 
img.Source = bitmapImage;
...