WPF - 缩放图像(在受限大小的项目控件内)

时间:2011-06-14 14:26:44

标签: wpf wpf-controls zoom transform

我想在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 个答案:

答案 0 :(得分:2)

你可以剪辑到Canvas

的边界
<Canvas ClipToBounds="True" ...>

但我不明白为什么你首先使用Canvas。很可能有一种更好的方法可以解决您的特定问题而无需硬编码的宽度和高度,并且根本没有任何Canvas