如标题所述。 我只是想知道在使用图像文件和绘制矢量形状(或路径)之间哪个更好。 我知道使用矢量图形可以获得更好的外观,但是性能方面呢。
如果这取决于具体情况。有人能解释一下吗?
(此问题可能涉及WP7、Silverlight、WPF甚至一般情况。)
如标题所述。 我只是想知道在使用图像文件和绘制矢量形状(或路径)之间哪个更好。 我知道使用矢量图形可以获得更好的外观,但是性能方面呢。
如果这取决于具体情况。有人能解释一下吗?
(此问题可能涉及WP7、Silverlight、WPF甚至一般情况。)
这里是一个简要回答,比较位图(我认为您指的是“图像文件”)与矢量图的优缺点。
基于位图的图像(gif、tiff、jpeg、png、bmp)本质上是将颜色(和其他数据,如 alpha 图层)映射到像素网格的概念。不同的文件格式提供了支持和压缩级别的变化,但这是高层次的概念。完整的像素和数据映射存储在文件中作为矩阵/表。
正如您所说,基于矢量的图像是基于路径的。文件格式不是通过像素存储信息,而是存储几何点和数据。
位图的优点是:
它们通常比矢量渲染更快。这是因为呈现图像时有最小的计算量(只需使用像素映射并显示即可)。
它们比矢量更适合处理“摄影”内容。
它们比矢量更易于移植。GIF、JPEG、PNG 和 BMP 比任何矢量格式都更标准(通常 Adobe 有市场)。
位图的缺点是:
它们不能在不失真的情况下进行缩放(像素化)。
与矢量相比,对位图进行操作(例如调整大小、模糊、光照等)需要更多的处理器资源。
文件通常比基于矢量的文件大得多。
矢量的优点是:
灵活可扩展和操纵。
比矢量文件格式更小。
适合印刷和动画制作(例如通过操纵形状产生动画效果)。
矢量的缺点是:
渲染时间根据矢量的复杂性而定,可能会更长。
可移植性,大多数格式高度专有。
对于“图形”图像很有用,但对于写实主义没有用处。
希望这有所帮助。
Jeremiah Morrill提供了一个WPF渲染的很好的概述,基本上显示矢量图形始终比图像更昂贵。基本上,图像被视为DirectX纹理...无论大小、缩放或其他任何因素,都有一个固定的渲染成本。正如Jer的概述所示,在WPF中,即使是最简单的矢量图像也需要多个操作才能呈现。故事的寓意是,在选择时,选择图像而不是矢量图。
根据我们在Windows Phone 7(非Mango)应用程序方面的经验,我们发现在页面上进行连续动画时使用图像而不是绘图可以产生更高的响应性和用户体验性能。(结果可能因人而异)
我最初会说图像比矢量图渲染得更快。矢量图越复杂,渲染所需的时间就越长。图像越大,渲染所需的时间也就越长。
我猜测(以 Silverlight 为例),现在大多数视频硬件都能够直接处理图像渲染,从而提高性能。我不确定是否可以在视频硬件层面完成矢量图的计算。
从Windows Phone 7的角度来看,相对于路径/向量,图像/位图通常会得到更快的渲染。对于移动开发的一般规则是,由于设备上的资源受限并且需要考虑性能,如果您可以在设计(或编译)时完成某些操作,例如准备图像,则绝对比在每个客户端上多次执行要好。
非常小心地将规则应用于不同平台(WPF、Silverlight和WP7),因为它们在不同情况下用于不同的事情,并且受到不同的限制。在高功率PC上运行的WPF应用程序中可能不会像在手机上那样需要考虑的问题。