如何使用MatrixTransform将缩放限制为500%?

时间:2012-11-28 12:45:50

标签: wpf zoom rendertransform

我有一个Image,如下所示。使用MatrixTransform我可以轻松放大和缩小。如何检测缩放是否太小/太大?例如。我想将缩放限制在10-200%。

<ScrollViewer x:Name="scrollViewer" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">
   <Border x:Name="border" ClipToBounds="True" Width="Auto" Height="Auto">
     <Image x:Name="image" Source="test.png"/>
   </Border>
 </ScrollViewer>

实际转型:

Point p = e.MouseDevice.GetPosition(image);

Matrix m = image.RenderTransform.Value;
if (e.Delta > 0)
    m.ScaleAtPrepend(1.1, 1.1, p.X, p.Y);
else
    m.ScaleAtPrepend(1.0 / 1.1, 1.0 / 1.1, p.X, p.Y);

// How do I know if the zoom level is lower than 10% or higher than 200%?
image.RenderTransform = new MatrixTransform(m);

1 个答案:

答案 0 :(得分:4)

除非您也进行轮换,否则Matrix.M11(或M22)会为您提供缩放系数。

Matrix m = image.RenderTransform.Value;
...
if (m.M11 >= 0.1 && m.M11 <= 2.0)
{
    image.RenderTransform = new MatrixTransform(m);
}