使用Bresenham的线算法或类似方法填充矩形

时间:2017-07-26 21:48:00

标签: c# .net algorithm rectangles bresenham

我想使用Bresenham的线算法或类似方法从四个点创建一个填充矩形,以获得平滑的边。我在Stack Overflow [link]上遇到了这个答案,它非常适合在两点之间创建一条线。如何使用/修改此功能来创建填充矩形?还有其他算法可以更好地满足我的需求吗?

1 个答案:

答案 0 :(得分:0)

对于任意旋转的矩形:

注意:此描述遵循wiki Wu's implementation沿着OX轴进行for循环,但沿OY轴绘制边并填充水平线更有效。

按X坐标左键对顶点进行排序 使水平轴上的间隔由顶点分隔 对于每个间隔选择上边和下边
同时执行Wu的上边缘和下边缘的antaliasing绘图

对于上边缘绘制上半透明像素

   draw: plot(ipart(intery)  , x, rfpart(intery))

并忽略底部像素,使用其位置作为填充线的起点

   LineFrom(ipart(intery)+1, x)

对于下边缘绘制底部半透明像素并使用鞋面作为填充线的末端

到达角落时重新初始化边缘绘制。