gpt4 book ai didi

c# - 如何在 WPF 中尽可能高效地绘制图形

转载 作者:IT王子 更新时间:2023-10-29 04:49:53 24 4
gpt4 key购买 nike

我正在创建一个严重依赖图形节点树的工具。当前的实现是用 Java 完成的,我将它移植到 C# 上的通用代码库,因此它可以被各种渲染实现使用,也因为我想使用 WPF 的强大功能来实现用户友好的界面。

逛了一天,发现了各种通过WPF绘制矢量图的方法。

This guy谈到 WPF 开发人员可以选择的不同层。由于一开始我想纯粹使用 WPF 进行渲染,所以我想在“可视层”上工作。

然后我遇到了这样的事情: DrawingVisual , GeometryDrawing , FrameworkElement/UIElement/形状

因此,我对所有以完全不同的方式最终实现相同的不同实现感到有点不知所措。

Graph-Node 库的所有逻辑(包括碰撞检测和鼠标拖动)都已移植到 C#。由于它是在考虑图形渲染器(如 XNA、SlimDX、OpenTK 等)的情况下制作的,因此在性能方面实现 WPF 渲染器的最佳方式是什么(例如,它将绘制图形库告诉它的任何内容)画画?

基本上,生成的 WPF 控件充当 Canvas ,但它必须非常轻巧,除了为我提供绘制圆圈、线条和其他形状的方法外,没有任何简洁的 WPF 功能:)

编辑:

我基本上想知道:要走的路是什么?我是否将 Canvas 扩展为图形的“宿主”,然后添加自定义的 UIElement 实现?或者我可以拥有一个可以绘制所有内容的类(class)(例如,一个 super super 图形)。很像重写 GDI 中的 OnPaint 或 Java 中的 Paint 方法(它提供一个 Graphics 对象来处理所有事情)。

最佳答案

我建议阅读 Optimizing Performance: 2D Graphics and Imaging .

一般来说,Drawing 对象的重量会比 Shapes 轻。这可能是您想要使用的。

关于c# - 如何在 WPF 中尽可能高效地绘制图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7366574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com