C#最近正在做一个画图软件:如何用鼠标点击实现任意填充,举例说明,请写出详细代码,谢谢!!!

 我来答
魔法软糖™
2016-12-17 · TA获得超过838个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:151万
展开全部

就是获取该点颜色,然后递归搜索四周像素点的颜色,如果一样就改变它的颜色。



用扫雷游戏的扩展空白方格给你改的:

旧颜色值 : 鼠标点击位置的颜色.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);
    }
      }
    }
  }
}

注意,有递归深度限制,太大的区域可能会溢出。


如满意,请采纳,谢谢。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式