代码之家  ›  专栏  ›  技术社区  ›  user8221510

矢量图形如何作为光栅图形“实时”显示?

  •  1
  • user8221510  · 技术社区  · 7 年前

    因此,我的显示器使用光栅图形,因此充满了像素。

    然而,我听说Adobe Illustrator使用矢量图形。

    那么,如何在基于像素的显示器上“实时”显示矢量图形呢?

    来自以下文章 this one ,矢量图形和光栅图形完全不同?那么,为什么他们可以互相展示——就像他们是一样的?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Nerdy Bunz    7 年前

    Adobe Illustrator是一个“矢量程序”,这一事实只意味着它旨在帮助用户使用矢量。。。例如,正如Audacity可以帮助用户处理声音一样,Notepad也可以让用户处理字符。

    就操作系统(OS)和/或硬件对Adobe Illustrator表示图形的方式的期望而言,Adobe Illustrator和任何其他程序之间没有区别。

    举这三个例子:

    enter image description here


    enter image description here


    enter image description here

    我们可以使用“+”符号来表示光栅和矢量之间的差异:

    光栅:“+”符号的3 x 3像素黑白光栅:

    0 1 0
    1 1 1
    0 1 0  
    

    向量:与向量相同的符号:

    [draw a line from point ( 1/3 X, 1/2 Y ) to point ( 2/3 X, 1/2 Y )]
    [draw a line from point ( 1/2 X, 1/3 Y ) to point ( 1/2 X, 2/3 Y )]
    

    这些是抽象的表示--它们仍然需要 编码的 ,则, 已存储 已显示

    您可以从字面上看到光栅是如何编码、存储和显示的——作为离散的值矩阵。。。一幅马赛克,如果你愿意的话。

    另一方面,向量被编码并存储为一组指令。x和y坐标存储为总可用画布空间的分数(相对,而非绝对)。。。由于画布空间的尺寸尚不清楚。。。这就是为什么你可以无限扩展一个向量而不损失分辨率的原因。

    现在如果要在实际的“矢量显示”监视器上显示矢量(非常罕见),那么理论上可以直接将矢量指令发送到监视器。但是正如你所问:“如果你在传统显示器上显示一个向量(像素拼接图),会发生什么?”

    和答案再次是:当任何其他抽象概念被任何程序阐释时,都会发生同样的事情。

    但是向量最终会出现在屏幕上,因此下面是一个如何发生的最小示例:

    使用上面的“加号”示例,想象一个分辨率只有3 x 3像素的非常糟糕的显示器。操作系统可能会对程序(Illustrator)说:“我需要你的光栅输出为3 x 3像素宽。”

    因此,该程序将执行以下操作:

    1) 从点(1/3 X,1/2 Y)到点(2/3 X,1/2 Y)绘制一条线。。。但将这些点转换为3 x 3像素矩阵内的点。。。并通过填充第一个像素、最后一个像素和中间的所有像素来绘制线。

    2) 对第二条指令执行相同的操作。

    3) 将生成的3 x 3像素矩阵交给操作系统。

    PS-你问他们如何“互相展示”传统的显示器可以显示已转换为像素的向量,但我认为这从来没有以相反的方式进行过。