C#最近正在做一个画图软件:如何用鼠标点击实现任意填充,举例说明,请写出详细代码,谢谢!!!
1个回答
展开全部
就是获取该点颜色,然后递归搜索四周像素点的颜色,如果一样就改变它的颜色。
用扫雷游戏的扩展空白方格给你改的:
旧颜色值 : 鼠标点击位置的颜色.ToArgb() 获得的整数值
新颜色值:要更改的颜色.ToArgb() 获得的整数值
public void 扩展空方格(int X, int Y, Bitmap 位图)
{
object 检测点集 = new List<Point> {
{ new Point(X - 1, Y - 1) },
{ new Point(X - 1, Y) },
{ new Point(X - 1, Y + 1) },
{ new Point(X + 1, Y - 1) },
{ new Point(X + 1, Y) },
{ new Point(X + 1, Y + 1) },
{ new Point(X, Y - 1) },
{ new Point(X, Y + 1) }
};
foreach ( 检测点 in 检测点集) {
if (检测点.X > 0 & 检测点.X <= 宽) {
if (检测点.Y > 0 & 检测点.Y <= 高) {
int 颜色值 = 位图.GetPixel(检测点.X, 检测点.Y).ToArgb();
if (颜色值 == 旧颜色值) {
位图.SetPixel(检测点.X, 检测点.Y, Color.FromArgb(新颜色值));
扩展空方格(检测点.X, 检测点.Y);
}
}
}
}
}
注意,有递归深度限制,太大的区域可能会溢出。
如满意,请采纳,谢谢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询