MaxWidth и MaxHeight расширяют изображения меньшего размера после их фактического использования - PullRequest
0 голосов
/ 08 апреля 2020

При использовании элемента управления Image для загрузки изображений на wpf Canvas все работает. Но некоторые изображения имеют большой размер и взрываются на поверхности, поэтому я установил MaxHeight и MaxWidth для отображения этих изображений в пределах ограничений max .

Затем происходит загрузка большого изображения, но побочным эффектом является то, что изображения размером меньше, чем максимальный размер и ширина, тогда растягиваются до максимального размера. Это связано с тем, что устанавливается Stretch, значение которого отличается от None.

<Image Source="{Binding Source}"
       Stretch="UniformToFill"
       MaxHeight="200"
       MaxWidth="400"/>

Results, No Max on the left, and Max on the right.

Левое изображение без установки макс. Правое изображение с установленными максимумами


Проблема

Очевидно, что у меня есть конкурирующие приоритеты, с одной стороны позже (после начальной загрузки) изображение может быть изменено, и для этого изменения необходимо установить 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...