2011-05-05 79 views
7

我不太清楚类别System.Windows.Media.DrawingSystem.Windows.Shapes.Shape之间的差异。它们都暴露了WPF中与2D图形相关的功能。你什么时候在你的WPF应用程序中选择一个,你什么时候选择另一个?在WPF中选择图形和形状

回答

9

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

图形可以结合文本,视频,图像和另一个轻量级类别创建复杂但非常高效和快速的图形。

总之一个Drawing是一个Shape的低级替代品。 至于用例,它取决于。

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

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