0

我想使用它的 RenderTransform 设置元素的缩放和偏移。

为此,以下代码有效:

public static void SetMatrixTransform(this UIElement elem, double zoom, double offsetX, double offsetY)
{
    elem.RenderTransform = new MatrixTransform
    {
        Matrix = new Matrix(zoom, 0, 0, zoom, offsetX, offsetY)
    };
}

但后来我想通过避免每次重新创建 MatrixTransform 来提高我的性能,因为我只需要设置它的值。

所以我提出了以下代码:

public static void SetSmartMatrixTransform(this UIElement elem, double zoom, double offsetX, double offsetY)
{
    if (elem == null)
        return;

    if (!(elem.RenderTransform is MatrixTransform))
    {
        elem.RenderTransform = new MatrixTransform
        {
            Matrix = new Matrix(zoom, 0, 0, zoom, offsetX, offsetY)
        };
    }
    else
    {
        ((MatrixTransform)elem.RenderTransform).Matrix = new Matrix(zoom, 0, 0, zoom, offsetX, offsetY);
    }
}

不幸的是,当我点击else分支时,Matrix 属性没有更新!即 elem.RenderTransform 保持与方法开始时相同的值。

是否可以只更改矩阵而无需每次重新创建 MatrixTransform?

如果是,我该怎么办?

4

0 回答 0