2012-11-28 5 views
0

아래와 같이 Image입니다. MatrixTransform을 사용하면 쉽게 확대하고 축소 할 수 있습니다. 확대/축소가 너무 작거나 큰지 어떻게 알 수 있습니까? 예 : 확대를 10-200 %로 제한하고 싶습니다.MatrixTransform을 사용하여 확대/축소를 500 %로 제한하는 방법은 무엇입니까?

<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); 

답변

4

또한 회전하지 않는 Matrix.M11가 (또는 M22)의하면 스케일링 팩터를 제공한다.

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