1

我想计算其他控件的“RenderTransformOrigin”标准。请看这张图片,因为我的英语说得不好。

图 1

有盒子放在同一层。不是孩子,不是父母。绿色框理论上是父级。所以所有控件的 RenderTransformOrigin 与绿色框的位置相同。但我认为 RenderTransformOrigin 是本地坐标系。

我想计算 RenderTransformOrigin ...

感谢您

编辑 我目前正在尝试这种方式....

中心点(局部坐标系?)

ItemHeight * CriteriaItem.OriginY
ItemWidth * CriteriaItem.OriginX

计算(中心点在结果之上)

CenterPoint.X / TargetBoxWidth
CenterPoint.Y / TargetBoxHeight

Final
Convert TargetBox的locar坐标系)

Cavnas.TranslatePoint(CalculatedPoint, TargetBox)

编辑
我以上述方式解决了。

扩展方法

    public static Point GetCenterPoint(this UIElement item, UIElement target)
    {
        return item.TranslatePoint(
                    new Point(item.Width * item.RenderTransformOrigin.X, item.Height * item.RenderTransformOrigin.Y), target);
    }

    public static Point GetRenderTransformOrigin(this Point p, double h, double w)
    {
        return new Point(p.X / w, p.Y / h);
    }

用法

RenderTransformOrigin = GetCenterPoint(BaseItem).GetRenderTransformOrigin(ChildItem.Height, ChildItem.Width);

但....

当我更改“RenderTransformOrigin”时,这个旋转和位置发生了变化......

旋转完成后,想办法在不使用 RotateTransform 的情况下保持旋转对象。

帮我。

谢谢你。

4

0 回答 0