我想使用它的 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?
如果是,我该怎么办?