我有一个图像,并使用渲染变换原点为 (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;