2017-12-24 13 views
0

上にマウスのスクロールズームを中心にスクロールするときにマウスが置かれるポイント。私はこのコードを使用して、私のイメージにズームインすることができる午前現在のマウス位置

私はthis answerをコピーしようとした:

var matTrans = image.RenderTransform as MatrixTransform; 
var pos1 = e.GetPosition(image); 

var scale = e.Delta > 0 ? ZoomSpeed : -ZoomSpeed; 

var mat = matTrans.Matrix; 
mat.ScaleAt(scale, scale, pos1.X, pos1.Y); 
matTrans.Matrix = mat; 
e.Handled = true; 

が、私は、私はimageは間違いなく私のXAMLウィンドウからオブジェクトが含まれていることを見ることができるにもかかわらず、最初の行にNullReferenceExceptionを取得し、いくつかの理由があります。

私は本当に感謝して、この1つを助けます - 私はこの種の変換を実行する経験はほとんどありません。ここで

は私のXAMLです:

<Grid> 
    <Border Name="border" Margin="10,26,10.4,27.8"> 
     <Image Name="image" Source="{Binding DisplayedImage, Mode=OneWay, IsAsync=True}" Opacity="1" Margin="0,0,-0.4,0.2" /> 
    </Border> 
</Grid> 

答えて

0

私の質問に2つのスニペットを組み合わせることで、私はこの

var transformGroup = (TransformGroup)image.RenderTransform; 
var transform = (ScaleTransform)transformGroup.Children[0]; 
var pos1 = e.GetPosition(image); 
double zoom = e.Delta > 0 ? ZoomSpeed : -ZoomSpeed; 

if (!(transform.ScaleX < minScale) || zoom > 0) 
{ 
    transform.ScaleX += zoom; 
    transform.ScaleY += zoom; 

    transform.CenterX = pos1.X; 
    transform.CenterY = pos1.Y; 
} 

に上がってきたことがある、私はそれが何をする必要があるか、ほとんどありません現在のマウスの位置に画像の中心を合わせます。

関連する問題