Flood Fill Image
2015-07-27 17:43
246 查看
http://rosettacode.org/wiki/Bitmap/Flood_fill#First_example
C# Example:
C# Example:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace FloodFill { class Program { private static bool ColorMatch(Color a, Color b) { return (a.ToArgb() & 0xffffff) == (b.ToArgb() & 0xffffff); } static void FloodFill(Bitmap bmp, Point pt, Color targetColor, Color replacementColor) { Queue<Point> q = new Queue<Point>(); q.Enqueue(pt); while (q.Count > 0) { Point n = q.Dequeue(); if (!ColorMatch(bmp.GetPixel(n.X, n.Y), targetColor)) continue; Point w = n, e = new Point(n.X + 1, n.Y); while ((w.X > 0) && ColorMatch(bmp.GetPixel(w.X, w.Y), targetColor)) { bmp.SetPixel(w.X, w.Y, replacementColor); if ((w.Y > 0) && ColorMatch(bmp.GetPixel(w.X, w.Y - 1), targetColor)) q.Enqueue(new Point(w.X, w.Y - 1)); if ((w.Y < bmp.Height - 1) && ColorMatch(bmp.GetPixel(w.X, w.Y + 1), targetColor)) q.Enqueue(new Point(w.X, w.Y + 1)); w.X--; } while ((e.X < bmp.Width - 1) && ColorMatch(bmp.GetPixel(e.X, e.Y), targetColor)) { bmp.SetPixel(e.X, e.Y, replacementColor); if ((e.Y > 0) && ColorMatch(bmp.GetPixel(e.X, e.Y - 1), targetColor)) q.Enqueue(new Point(e.X, e.Y - 1)); if ((e.Y < bmp.Height - 1) && ColorMatch(bmp.GetPixel(e.X, e.Y + 1), targetColor)) q.Enqueue(new Point(e.X, e.Y + 1)); e.X++; } } } static void Main(string[] args) { Bitmap bmp = new Bitmap("Unfilledcirc.bmp"); FloodFill(bmp, new Point(170, 211), Color.White, Color.Yellow); bmp.Save("Filledcirc.bmp"); } } }
相关文章推荐
- MyEclipse 8.6 更新安装 maven插件
- JVM 进阶 三 基本垃圾回收算法
- 防止apk被捆绑加入的判断
- 杭电 1865 1string
- 生成MyEclipse6.5&7.5&8.0注册码的java源码
- Android编程权威指南-第一章挑战练习二:添加后退按钮
- python安装
- STL使用概述
- Notification 的使用
- Best Time to Buy and Sell Stock II
- zookeeper无法启动"Unable to load database on disk"
- registerClass和registerNib的区别
- 让 Vim 支持 nginx 语法(syntax) 格式化配置文件
- supervisor的配置
- 标准Http协议支持六种请求方法
- 最长公共上升子序列 csu1120 病毒
- Notification 的基本知识
- HDOJ 1012 u Calculate e(水题)
- 80端口被NT kernel & System占用
- PHP中的SESSION机制