0

我有一个图像,并使用渲染变换原点为 (0.5, 0.5) 的滑块对其进行缩放,因此相对于中心,图像缩放良好。现在正在平移图像,现在当我增加滑块时,它会相对于图像的原始中心缩放图像,但我希望必须将视图中的部分作为中心并执行缩放。

我已经尝试为此计算渲染变换原点。但不起作用。

   Matrix matrix = ZoomMatrixTransform == null ? Matrix.Identity : 
           ZoomMatrixTransform.Matrix;
        var m1 = matrix.M11;
        var m2 = matrix.M22;

           ZoomMatrixTransform = zoomValue == 1 ? new MatrixTransform(Matrix.Identity) : new MatrixTransform(matrix);


          if (matrix.OffsetX == 0 && matrix.OffsetY == 0)
            {
                child.RenderTransformOrigin = new Point(0.5, 0.5);
            }

               var elementBounds = new Rect(child.RenderSize);
            var transformedBounds = child.TransformToAncestor(imageEditorPanel).TransformBounds(elementBounds);

            var scaledWidth = elementBounds.Width * m1;
            var scaledHeight = elementBounds.Height * m2;


           var centerX = ((scaledWidth / 2) - matrix.OffsetX) / scaledWidth;
            var  centerY = ((scaledHeight / 2) - matrix.OffsetY) / scaledHeight;

            Point  origin = new Point(centerX, centerY);

            child.RenderTransformOrigin = origin;
            child.RenderTransform = ZoomMatrixTransform;
4

0 回答 0