将位图或Xaml用于Graphic元素是否更好?

时间:2011-11-18 18:28:23

标签: wpf silverlight xaml

我希望用一些图形元素设置我的应用程序样式。图标和其他想法。

从性能和最佳实践角度来看,使用vektor图形(XAML)或将图形转换为PNG会更好吗?

为什么?

我知道矢量图形是可扩展的......这只是基于xaml的大型应用程序的性能问题。

2 个答案:

答案 0 :(得分:4)

你必须权衡自己的需要。如果它只是表现,那么我会说这取决于图像的数量。如果它们数量很大,那么XAML确实会更高效,否则它可以忽略不计。

但是我必须说纯粹的可维护性,特别是因为你正在谈论图标等等,你用位图会好得多,我会告诉你原因。任何人和他们的兄弟都可以编辑图标。你不能对矢量图形说同样的话。如果您想在某个时候更换图标,只需更换图像即可。您不必经历创建和/或查找矢量图像的麻烦,然后(很可能)必须通过导出过滤器将它们转换为XAML。此外,位图表格中有数百万个CC许可图标,您只能使用归因。

是的,在某些情况下,有一些位图的麻烦(例如一些处理ActualWidth / ActualHeight的怪癖),但在我看来这些都是次要的。

补充:微软的Yi-Lun Luo在2008年发表了vectors are faster。随着2009年第3版的发布,Silverlight利用了GPU,它可以让矢量更快,如果你启用它也可以如果你也使用BitmapCache。因此,从纯粹的性能角度来看,理论上矢量会更快。

答案 1 :(得分:2)

XAML优于PNG的优势:

  1. 缩放 - XAML绘图由矢量组成,因此可以缩放。超出因子2的比例可能会导致问题(缩小时将错误四舍五入,扩展时细节太少)。
  2. 动态着色/动画 - 您可以使用动画轻松操纵绘图中的颜色和点甚至曲线。
  3. PNG优于XAML的优势:

    1. 加载/缓存速度 - 可以在GPU上缓存PNG。磁盘上的字节数不会超过每像素4位(+一些开销)
    2. Pixel perfect - 设计师绘制的内容显示在应用程序中。使用矢量时要困难得多。
    3. 根据您的需求以及性能,负载和文件大小的测量结果进行选择。