点阵编辑窗.画笔颜色 = #黑色‘线的颜色
点阵编辑窗.刷子颜色 = #红色‘填充的颜色
点阵编辑窗.画椭圆 (10, 10, 100, 100)
'具体自己观察吧
函数原型:BOOL ExtFloodFill(HDC hdc,int nXStart,int nYStart,COLORREF crColor,UINT fuFillType);参数:
nXSTart:指定要开始填充处的逻辑X轴坐标。
nYStart:指定要开始填充处的逻辑Y轴坐标。
crColor:指定要填充的边界或区域的颜色。crColor的具体解释要根据参数fuFillType的值而定。
fuFillType:指定要进行的填充 *** 作类型。该参数必须是下列值之一,这些值的含义如下:
FLOODFILLBORDER:表示填充区域是由crColor参数指定的颜色包围起来的部分。这种形式与FloodFill函数执行的填充类型一样。
FLOODFILLSURFACE:表示填充区域是由crColor指定的颜色来定义。填充 *** 作向四周伸展,直到遇到这种颜色为止。这种 *** 作式样对于带有多种颜色边界的填充区域有用。
返回值:如果函数执行成功,那么返回值为非零;如果函数执行失败,那么返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:下列原因可能引起函数执行失败:
填充无法完成。
指定的像素点有着参数crColor(如果要求
*** 作样式)指定的边界颜色(即颜色相同)。
指定的像素点没有参数crColor(如果要求FLOODFILLSURFACE *** 作样式)指定的颜色。
该点在剪辑区之外――也就是说在设备中不可见。
如果fuFillType参数为FLOODFILLBORDER,那么系统认为要填充的区域是完全被参数crColor指定的颜色包围起来的。该函数从参数nXStart和nYStart指定的点开始填充,向四周继续,直到遇到边界为止。
如果fuFillType是FLOODRILLSURFACE,那么系统就认为要填充的区域是单颜色的,函数从nXStart和nYStart两个参数指定的点开始填充区域,并向四周延伸,对包含参数crColor指定颜色的所有相邻区域进行填充。
只有支持光栅显示 *** 作的设备和内存设备环境才支持ExtFloodFill函数。为了确定设备是否支持该技术,可使用函数GetDeviceCaps。
http://baike.baidu.com/link?url=f3zWLgOrbiGbclYPn7q4k6yprVW5CKW1OZ2ec21I7kbVxTX2mQABswsozHdlNElWJqXjzE5RPNfKX08273wPGa
以上内容复制自百度百科
常量值
FLOODFILLBORDER =0
FLOODRILLSURFACE =1
种子填充算法
编辑
种子填充算法又称为边界填充算法。其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。
种子填充算法常用四连通域和八连通域技术进行填充 *** 作。
从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素。用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法。
从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素。用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法。
一般来说,八向连通算法可以填充四向连通区域,而四向连通算法有时不能填充八向连通区域。例如,八向连通填充算法能够正确填充如图2.4a所示的区域的内部,而四向连通填充算法只能完成如图2.4b的部分填充。
图2.4 四向连通填充算法
a) 连通域及其内点 b) 填充四连通域
四向连通填充算法:
a) 种子像素压入栈中;
b) 如果栈为空,则转e);否则转c);
c) d出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多边形的填充色,若不是,则将该像素压入栈;
d) 转b);
e) 结束。
http://baike.baidu.com/link?url=jAM4UlhNMYk8__THzHZ2vN_0Fog1LVxC0T3REPhd5QVWhGPEFxHLesL5AMxN6Z4BwfvbxL2bq_KtQHm7CErVWq
要善用搜索
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)