При использовании элемента управления Image
для загрузки изображений на wpf Canvas
все работает. Но некоторые изображения имеют большой размер и взрываются на поверхности, поэтому я установил MaxHeight
и MaxWidth
для отображения этих изображений в пределах ограничений max .
Затем происходит загрузка большого изображения, но побочным эффектом является то, что изображения размером меньше, чем максимальный размер и ширина, тогда растягиваются до максимального размера. Это связано с тем, что устанавливается Stretch
, значение которого отличается от None
.
<Image Source="{Binding Source}"
Stretch="UniformToFill"
MaxHeight="200"
MaxWidth="400"/>
Левое изображение без установки макс. Правое изображение с установленными максимумами
Проблема
Очевидно, что у меня есть конкурирующие приоритеты, с одной стороны позже (после начальной загрузки) изображение может быть изменено, и для этого изменения необходимо установить Stretch
, чтобы оно расширялось до этого размера. Начальная конкурирующая потребность, как обсуждалось, заключается в загрузке изображений как есть, , если они не go сверх максимальных размеров
Как я могу добиться того и другого в зависимости от потребности; при загрузке он изменяет размеры до макс. только , если больше макс? Затем после загрузки изображения можно установить Stretch
на UniformToFill
?
The Thry Tried
Я пытался установить Stretch
после загрузки, но, похоже, тот же эффект. Я предполагаю, что он запускается не после загрузки Image , но, к сожалению, когда загружается control ; что происходит до загрузки изображения.
private void LoadedImage(object sender, RoutedEventArgs e)
{
if (sender is Image image)
image.Stretch = Stretch.UniformToFill;
}