Я хочу оптимизировать использование памяти в своем приложении WPF. Я хочу загрузить с диска изображение в формате jpg и показать его в реальном размере. И тут я хочу показать 5 обрезанных квадратных участков исходного изображения, загруженного с диска. (Никакое изменение размера не применяется ни к одному изображению). Я хочу сделать все это, загрузив исходное изображение один раз и разделив эти данные между элементами управления изображением таким образом, чтобы память не тратилась впустую, а все элементы управления извлекали данные из одной и той же области памяти.
Я попытался использовать объект потока памяти, но в конце концов из-за некоторых преобразований между растровым изображением и растровым изображением я скопировал данные.
Кроме того, вы можете перефразировать свой вопрос. Справочная информация полезна, но сейчас все, что у вас есть, это список требований, а чего у вас нет, так это одного четкого и краткого вопроса. Вы также можете посмотреть статью Stackoverflow о том, как задавать хорошие вопросы, здесь stackoverflow.com/help/как спросить
Использовать обрезанный битмап





Я нашел интересный способ обрезать изображение из BitmapImage здесь, который, я думаю, решит вашу проблему. Делая это таким образом, вы можете отображать все свои изображения, используя только один BitmapImage
В вашем xaml ваше изображение с полным разрешением будет просто обычным элементом изображения, но ваши обрезанные изображения будут прямоугольным элементом, использующим кисть изображения с определенным полем просмотра. Просто определите прямоугольник с высотой и шириной обрезанного изображения, которое вы хотите, а затем поле просмотра определяется как «высота ширины xy» (в моем примере это «10 20 100 200») и помните, что x начинается с 0 для влево и положительно движется вправо, а y начинается с 0 для вершины и положительно движется вниз.
<Image Source = "{Binding Image}"></Image>
<Rectangle Height = "200" Width = "100">
<Rectangle.Fill>
<ImageBrush ViewboxUnits = "Absolute" Viewbox = "10,20,100,200" ImageSource = "{Binding Image}"></ImageBrush>
</Rectangle.Fill>
</Rectangle>
Обратите внимание, что привязка для Image и ImageBrush одинакова, поэтому вам нужно определить Image только один раз, и он будет использоваться для обоих элементов.
Можете ли вы предоставить минимальный воспроизводимый пример, показывающий код, который вы пробовали? stackoverflow.com/help/минимально-воспроизводимый-пример Вам будет сложно помочь, если мы не сможем воспроизвести проблему, с которой вы столкнулись.