Windows GDI具有以下功能:
MoveTo();
LineTo();
它们接受在哪里开始绘制和在哪里停止绘制的坐标。
但是这些函数是如何实现的呢?(特别是LineTo)
他们需要计算A点和B点之间的所有点吗??
这条线到底是怎么画的?
发布于 2011-07-30 03:06:04
是的,他们计算A和B之间的每个点。
最常见的有效方法是Bresenham's Line Algorithm。
请注意,Windows LineTo不会绘制最后一个点。当一个接一个地绘制直线段时,这将防止重复绘制端点。
发布于 2011-07-30 03:07:24
从来没有看过Windows源代码的人可以深入回答这个问题……但Windows和其他软件一样:它需要一些算法来划清界限……你可以在这里看到一个这样的算法:http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
Moveto更“简单”,因为它只更新系统已知的当前坐标...
发布于 2011-07-30 03:10:08
它不需要计算A和B之间的所有点(这是无限的),只需要计算A和B之间的离散像素。这通常是一个标准的线条光栅化算法。有关Bresenham的线条光栅化算法,请参阅Wikipedia,这是标准的教科书示例,通常也是更灵活的光栅化算法的基础。
https://stackoverflow.com/questions/6877770
复制相似问题