0

WPF でのズームとパンに関するこの質問に応えて、ScaleTransform を使用し、MouseMove イベントで RenderTransform の起点を更新することを提案しました。これは機能しますが、パンの動きがマウスと完全に一致しないという事実に満足していません. このアルゴリズムの問​​題点はわかりますが、正しい実装はまだわかりません。

private void image_MouseMove(object sender, MouseEventArgs e)
{
    if (image.IsMouseCaptured)
    {
        Vector v = start - e.GetPosition(image);
        // this calculates the deltas relative to the original size of the image
        // but does not take into account the transformed size, but transforming the
        // size like image.ActualWidth * scaleTransform.ScaleX does not help
        double deltax = v.X / image.ActualWidth;
        double deltay = v.Y / image.ActualHeight;

        image.RenderTransformOrigin = new Point(orgin.X + deltax, orgin.Y + deltay);
    }
}

このアプローチを機能させる方法についてのアイデアはありますか?

4

1 に答える 1

1

それがあなたのために働かないのはかなり奇妙です。私はパンを行うために同様の方法を使用しています。しかし、私デルタをscaleTransform.ScaleXで除算します。

もう1つの違いは、RenderTransformOriginを使用する代わりに、TranslateTransformをTransformGroupに追加し、変換のXとYを変更することです。

于 2009-04-22T16:17:27.043 に答える