Graphics 计算机是如何划线的??

Graphics 计算机是如何划线的??,graphics,gdi,Graphics,Gdi,Windows GDI具有以下功能: MoveTo() LineTo() 它们接受开始绘制和停止绘制的坐标 但是这些功能是如何实现的呢??(特别是LineTo) 他们需要计算A点和B点之间的所有点吗 这条线是怎么画的?是的,他们计算A和B之间的每个点 最常用的有效方法是 请注意,Windows LineTo不会绘制最后一点。当线段一个接一个地绘制时,这可以防止端点被双重绘制。从未看过Windows源代码的人都无法回答这个问题。。。 但Windows和其他软件一样:它需要一些算法来画一条线。。。你

Windows GDI具有以下功能:

MoveTo()

LineTo()

它们接受开始绘制和停止绘制的坐标

但是这些功能是如何实现的呢??(特别是LineTo)

他们需要计算A点和B点之间的所有点吗


这条线是怎么画的?

是的,他们计算A和B之间的每个点

最常用的有效方法是


请注意,Windows LineTo不会绘制最后一点。当线段一个接一个地绘制时,这可以防止端点被双重绘制。

从未看过Windows源代码的人都无法回答这个问题。。。 但Windows和其他软件一样:它需要一些算法来画一条线。。。你可以在这里看到一个这样的算法


Moveto“更简单”,因为它只更新系统知道的当前坐标…

它不需要计算A和B之间的所有点(无限),只需要计算A和B之间的离散像素。这通常是一种标准的线光栅化算法。请参阅Bresenham的线光栅化算法,这是标准的教科书示例,通常是更灵活的光栅化算法的基础。

我怀疑除了(一种形式的)Bresenham之外,还有(可选的)抗锯齿。查看可能实现的算法(吴小林的line算法)

可能,看到Windows源代码的人也是StackOverflow用户:)可能的但即便如此,我也非常肯定,会有保密协议禁止分享他在资料来源中看到的任何东西:-)