c# - 在 WPF 中构建 CAD 程序

标签 c# wpf performance zooming

- 在 WPF 中构建 CAD 程序:

我想构建一个 CAD 程序,一次将有 10000 个 LINE 对象。我正在使用 LineGeomery 类来绘制添加到 Canvas 的线条。我已经实现了缩放平移,到目前为止性能非常好。

只有一个主要的失望:

线条的 粗细 在缩放时被缩放。我尝试将线条的 Bind Thickness 属性设置为一个因子以保持它们不变,这有效但在缩放时会显着降低性能。在 MouseWheel 上清除和绘制具有新厚度的新线也是不可能的。这也降低了性能,并且在当前方法中不实用。

- 现在我有什么解决方案?

  • 坚持目前的方法,忽略厚度的变化
  • 在 GDI+ 中完成所有工作
  • 在 WPF 中承载 GDI
  • 使用 WPF Viewport3D(LineThickness 在那里不变吗?)

- 其他解决方案?

你会采取哪些其他途径。我是 WPF 和编程的新手,我渴望学习。

更新:

这就是我现在做的方式。我使用 Pen 和 Brushes 在可视层上绘制了 3000 条线。然后在 MouseWheel 事件上,我使用更新后的粗细重新绘制所有线条。此外,在用户缩放之前,我不会向用户显示其余的线,因此我在每个 MouseWheel 事件中只创建 10000 条线中的 3000 条。

最佳答案

除了使用 Line 对象,您还可以通过 Path 对象绘制线条。这是一个答案 https://stackoverflow.com/a/15323221/1305119

关于c# - 在 WPF 中构建 CAD 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22551841/

相关文章:

HKCU 的 c# 权限

c# - 如何制作带注释的滚动条?

WPF DataBound TreeView 展开/折叠

java - string.replaceAll() 性能是否受到字符串不变性的影响?

c# - 在 WPF 中绘制大量可视元素的建议(简单)方法?

c# - Winforms构造函数时序错误?

c# - 如何将变量数据传递到 .NET MAUI GraphicsView Canvas 中

c# - 在 MVVM 中创建 WPF 动态面板

c# - 预编译的 ASP.NET 网站上的高波动 '% Time in JIT'

c# - Asp.Net MVC 3 动态属性编辑器