C# 在wpf画布上根据其RenderTransform绘制圆形

C# 在wpf画布上根据其RenderTransform绘制圆形,c#,wpf,canvas,C#,Wpf,Canvas,因此,我试图为wpf画布渲染变换设置比例和平移值,然后根据这个新的变换矩阵绘制一些圆 我有这样的代码 设置画布渲染变换比例和平移属性 window.canvas.RenderTransform.Value.Scale(xScale, yScale); window.canvas.RenderTransform.Value.Translate(offsetX, offsetY); 再加一个这样的圆 Ellipse circle = new Ellipse() { Width = 5,

因此,我试图为wpf画布渲染变换设置比例和平移值,然后根据这个新的变换矩阵绘制一些圆

我有这样的代码

设置画布渲染变换比例和平移属性

window.canvas.RenderTransform.Value.Scale(xScale, yScale);
window.canvas.RenderTransform.Value.Translate(offsetX, offsetY);
再加一个这样的圆

Ellipse circle = new Ellipse()
{
    Width = 5,
    Height = 5,
    Stroke = Brushes.Red,
    StrokeThickness = 8
};
circle.SetValue(Canvas.LeftProperty, (double) x);
circle.SetValue(Canvas.TopProperty,  (double) y);
window.canvas.Children.Add(circle);
但是画布没有在圆点上应用变换矩阵,我该怎么办?

表达式

window.canvas.RenderTransform.Value
返回变换矩阵的副本,因为
struct matrix
是值类型,而不是引用类型。对副本执行的任何操作都将丢失

使用

或者只是

window.canvas.RenderTransform =
    new MatrixTransform(xScale, 0, 0, yScale, offsetX, offsetY);
如果先前已将MatrixTransform指定给RenderTransform属性,您也可以只设置其
矩阵
值:

var matrix = new Matrix();
matrix.Scale(xScale, yScale);
matrix.Translate(offsetX, offsetY);
((MatrixTransform)window.canvas.RenderTransform).Matrix = matrix;
表情

window.canvas.RenderTransform.Value
返回变换矩阵的副本,因为
struct matrix
是值类型,而不是引用类型。对副本执行的任何操作都将丢失

使用

或者只是

window.canvas.RenderTransform =
    new MatrixTransform(xScale, 0, 0, yScale, offsetX, offsetY);
如果先前已将MatrixTransform指定给RenderTransform属性,您也可以只设置其
矩阵
值:

var matrix = new Matrix();
matrix.Scale(xScale, yScale);
matrix.Translate(offsetX, offsetY);
((MatrixTransform)window.canvas.RenderTransform).Matrix = matrix;