哪个更好?在使用图像文件和绘制矢量形状之间



正如我在标题上所说的。我只是想知道使用图像文件和绘制矢量形状(或路径)之间哪个更好。我知道使用vector在外观上更好,但是性能呢?

如果这取决于情况。谁能解释一下。

(这个问题可能包括WP7, Silverlight, WPF甚至一般情况下)

这是比较位图(我认为你指的是"图像文件")和矢量图的优缺点的一般答案。

基于位图的图像(gif, tiff, jpeg, png, bmp)本质上是将颜色(和其他数据,如alpha层)映射到像素网格的概念。不同的文件格式提供了支持的内容和压缩级别的变化,但这是高级概念。像素和数据的完整映射以矩阵/表的形式存储在文件中。

基于矢量的图像,正如你所说,是基于路径的。文件格式将存储几何点和数据,而不是按像素存储信息。

位图的优点是:

  • 它们通常比矢量渲染更快。这是因为呈现图像所涉及的计算很少(只需获取像素图并显示)。

  • 他们处理"照片"内容比矢量要好。

  • 它们比矢量更便携。GIF, JPEG, PNG, BMP比任何矢量格式(通常是Adobe的市场)更标准

位图的缺点是:

  • 它们不能在没有退化(像素化)的情况下缩放

  • 位图的操作(即调整大小,模糊,照明等)比矢量的处理器成本更高

  • 文件通常比矢量文件大得多

矢量的优点是:

  • 灵活的缩放和操作

  • 文件格式小于矢量

  • 理想的打印和动画(即操纵形状产生动画效果)

vector的缺点是:

  • 渲染时间,取决于矢量的复杂性,可以更长

  • 可移植性大多数格式都是高度专有的

  • 适用于基于"图形"的图像,但不适用于photorealism

希望这对你有帮助。

Jeremiah Morrill给出了一个很好的WPF渲染概述,基本上显示了渲染矢量总是比渲染图像更昂贵。基本上,图像被视为直接纹理…无论大小、缩放或其他什么,渲染图像都有一个固定的成本。正如Jer的概述所示,即使是最简单的矢量图像也需要在WPF中渲染许多操作。这个故事的寓意是,当给出一个选项时,使用图像而不是矢量。

根据我们使用Windows Phone 7(非芒果)应用程序的经验,我们发现使用图像而不是绘图在页面中连续动画的响应性和UX性能上要高得多。(YMMV)

我最初会说图像渲染比矢量快。向量越复杂,渲染的时间就越长。图片越大,渲染时间越长。

我推测(在Silverlight术语中)当前大多数视频硬件都能够直接处理图像渲染,从而提高性能。我不确定向量的计算是否可以在视频硬件级别完成。

从Windows Phone 7的角度来看,你通常会获得更快的图像/位图渲染速度,而不是路径/矢量。作为移动开发的一般规则,由于设备上的资源有限,并且需要考虑性能,如果你可以在设计(或编译)时做一些事情,例如准备图像,肯定比在每个客户端上多次做更可取。

在跨平台应用规则时要非常小心(WPF, Silverlight &WP7),因为它们在不同的情况下用于不同的事情,并且受到不同的约束。对于运行在高性能PC上的WPF应用程序来说,在手机上需要考虑的事项可能不是什么大问题。

最新更新