如何解决如何相对于视口中心缩放平移图像
我有一个图像,正在使用渲染变换原点为 (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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。