C# 如何在WPF中设置shape.Position而不创建新的点对象?

C# 如何在WPF中设置shape.Position而不创建新的点对象?,c#,.net,wpf,performance,graphics,C#,.net,Wpf,Performance,Graphics,我有1000个形状,它们的起始点,端点,中心,等等每秒被设置30次,但唯一的方法是每次创建一个新的点,因为System.Windows.Point是一个结构,所以我不能这样做: shape.Center.X = x; 甚至没有一个设置中心等方法来解决这个问题 有什么办法吗?为什么不创建新点 它们是简单的值类型,我看不到内存或性能问题 为什么不创建新点 它们是简单的值类型,我看不到内存或性能问题 使用TranslateTransform放置形状。使用RenderTransferMorigin设置

我有1000个形状,它们的
起始点
端点
中心
,等等每秒被设置30次,但唯一的方法是每次创建一个新的
,因为
System.Windows.Point
是一个结构,所以我不能这样做:

shape.Center.X = x;
甚至没有一个
设置中心
等方法来解决这个问题


有什么办法吗?

为什么不创建新点


它们是简单的值类型,我看不到内存或性能问题

为什么不创建新点


它们是简单的值类型,我看不到内存或性能问题

使用TranslateTransform放置形状。使用RenderTransferMorigin设置“中心”

编辑

渲染转换可以通过GPU加速。
您不会为每个帧添加一个变换,而是只添加一个变换并随时间更改其属性。请参见并使用TranslateTransform放置形状。使用RenderTransferMorigin设置“中心”

编辑

渲染转换可以通过GPU加速。
您不会为每个帧添加一个变换,而是只添加一个变换并随时间更改其属性。请参阅和

您是否分析了您的应用程序,以确保创建这些结构是您的瓶颈(或者至少是一个值得研究和尝试优化的瓶颈)?我严重怀疑您没有,并假设创建点结构是一项成本高昂的操作。个人资料第一!您是否分析了应用程序以确保创建这些结构是您的瓶颈(或者至少是一个值得研究和尝试优化的瓶颈)?我严重怀疑您没有,并假设创建点结构是一项成本高昂的操作。个人资料第一+在运行速度超过1 GHz的计算机上,每秒1…90000点结构。呸!渲染对象的代码将很容易淹没点的设置。+1,我无法想象这对性能有任何明显的影响。尝试分析。是的,但我想尽快完成,因为这样我可以增加每秒的迭代次数和形状数量。不可能猜测性能问题。我99%确信你上面所说的不可能是你的问题。运行特定于WPF的探查器。微软在这里描述了一些技巧:@Joan,如果你“想尽快做到这一点”,那么就用剖析器来找出真正的问题。这不是瓶颈。在运行速度超过1GHz的计算机上,每秒+1…90000点结构。呸!渲染对象的代码将很容易淹没点的设置。+1,我无法想象这对性能有任何明显的影响。尝试分析。是的,但我想尽快完成,因为这样我可以增加每秒的迭代次数和形状数量。不可能猜测性能问题。我99%确信你上面所说的不可能是你的问题。运行特定于WPF的探查器。微软在这里描述了一些技巧:@Joan,如果你“想尽快做到这一点”,那么就用剖析器来找出真正的问题。这不是瓶颈。谢谢,但是方法调用是吗?好像它们也是物体?我需要为每个形状分别执行此操作。虽然添加变换可能不会更快,但这可能是一个好主意。我在回答中添加了更多说明。谢谢,但是方法调用是否正确?好像它们也是物体?我需要为每个形状分别执行此操作。虽然添加变换可能不会更快,但这可能是一个好主意。我在回答中添加了更多说明。