在 WPF 中选择绘图和形状

发布于 2024-11-05 08:56:10 字数 138 浏览 0 评论 0原文

我不太确定 System.Windows.Media.Drawing 类和 System.Windows.Shapes.Shape 类之间的区别。它们都公开了与 WPF 中 2D 图形相关的功能。您什么时候会在 WPF 应用程序中选择一个,什么时候会选择另一个?

I am not quite sure about the differences between the classes System.Windows.Media.Drawing and System.Windows.Shapes.Shape. They both expose functionality related to 2D graphics in WPF. When would you choose one in your WPF application, and when would you choose the other?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聊慰 2024-11-12 08:56:10

Shape 继承自 FrameworkElement 因此是一个高级对象,提供命中测试、样式、布局和数据绑定等功能。相比之下, 绘图 不会继承自 < code>FrameworkElemet 并且不支持任何这些功能。正如文档提到的,Drawing 对于轻量级视觉对象很有用。如果您正在创建一个复杂的画笔来绘制区域或背景,那么 DrawingBrush 将非常有效。

绘图可以组合文本、视频、图像和几何 对象(另一个轻量级类)来创建复杂但非常高效且快速的绘图。

简而言之,DrawingShape 的低级替代方案。
至于用例,这取决于。

  • 如果您必须制作动画或进行任何类型的绑定,您将使用形状。
  • 如果您正在创建画笔或复杂的剪贴画/矢量图形,您可能会使用绘图。
  • 另外,如果您通过重写 OnRender 来绘制东西,您主要会使用几何图形。

Drawing 也是Freezable,因此可以在线程之间共享(假设它被冻结)。

A Shape inherits from FrameworkElement and is therefore a high level object which provides features such as hit-testing, styling, layout and data binding. In contrast a Drawing does not inherit from FrameworkElemet and doesn't support any of these features. As the documentation mentions a Drawing is useful for lightweight visual objects. If you are creating a complex brush to use to paint areas or a background a DrawingBrush would be very efficient.

Drawings can combine text, video, images and Geometry objects (another light weight class) to create complex but very efficient and fast drawings.

In short a Drawing is a low-level alternative to a Shape.
As for use cases, it depends.

  • If you have to animate or do any sort of binding you would use Shapes.
  • If you are creating brushes or complex clip arts/vector graphics you would probably use Drawings.
  • Also, if you draw things by overriding OnRender you would mostly use Geometries.

A Drawing is also Freezable and can thus be shared among threads (assuming it is frozen).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文