WPF - Увеличить изображение (внутри элемента управления с ограниченным размером) - PullRequest
1 голос
/ 14 июня 2011

Я хотел бы увеличить изображение в WPF и чтобы визуальная визуализация изображения находилась внутри элемента управления с ограниченным размером.

Например:

<Canvas x:Name="m_canvas" MaxWidth="300" MaxHeight="300" >
   <Image Source="..."
      Width="300"
      Height="300" />
</Canvas>

Код увеличения:

var matrix = ((MatrixTransform)m_image.RenderTransform).Matrix;

var center = new Point(m_image.ActualWidth / 2, m_image.ActualHeight / 2);
center = matrix.Transform(center);

matrix.ScaleAt(delta.Scale.X, delta.Scale.Y, center.X, center.Y);

((MatrixTransform)m_image.RenderTransform).Matrix = matrix;

Проблема в том, что при увеличении размера изображения размер рендера становится больше, чем ограничение холста (300x300). Хотелось бы, чтобы изображение можно было масштабировать только на холсте.

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

1 Ответ

2 голосов
/ 14 июня 2011

Вы можете обрезать до границ Canvas:

<Canvas ClipToBounds="True" ...>

Но я не понимаю, почему вы используете Canvas в первую очередь. Вполне вероятно, что есть гораздо более хороший способ решения вашей конкретной проблемы без необходимости жестко запрограммированных значений ширины и высоты и без каких-либо Canvas вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...