1、基本概念
区域:指相互连通的一组象素的集合。区域通常由一个封闭的轮廓线来定义,处于一个封闭轮廓线内的所有象素点构成一个区域。
区域填充:将区域内的象素置成新的颜色,新的颜色可以是常数,表示填以某种颜色;也可是变量,表示填充的是图案。
顶点表示:用多边形的顶点序列来刻划多边形。
点阵表示:用位于多边形内的象素的集合来刻划多边形。
2、简单扫描线填充算法
内点:填充成固定颜色或图案,
外点:不填充;
边界点:作为内点还是外点视要求而定。
当射线与多边形相交奇数次后,线上点都是内点。偶数次相交后线上点都是外点。
交点是顶点时:
3、边相关扫描线填充算法
改进思路:
每次计算边和扫描线交点,效率很低。
当前扫描线的交点顺序,与下一条扫描线与各边的交点顺序很可能相同或相似。
火花边表(AET):
与当前扫描线橡胶的边称为活动边,把它们按与扫描线交点x坐标递增的顺序存入一个链表中。
4、边填充算法
基本思想:对于每条多边形与每一条扫描线的交点,将该扫描线上交点友方像素取补。对多边形的每一条边作此处理。多边形的各边顺序随意。优点:算法简单。缺点:1)每个像素肯呢个被访问多次。2)输入、输出量大。
5、简单种子填充算法
原理:如果多边形区域,由此出发找到内所有像素。
区域分类:
四向连通:从区域上任意一点出发,可通过四个方向,即上、下、左、右移动的组合,在不越出区域的前提下,到达区域内的任意象素。
八向连通:区域内的每个象素,可以通过左、右、上、下、左上、右上左下、右下这八个方向的移动的组合来到达。
6、直线线宽
线刷子:垂直刷子、水平刷子。