循环。

Stack st = new Stack();

bool spLeft, spRight;

Bitmap b = canvas.buffer;

st.Push(start);

spLeft = spRight = false;

Point p = new Point();

while (st.Count > 0)

{

//going as far top as possible (finding first obstacle)

p = st.Pop();

while (p.Y >= 0 && b.GetPixel(p.X, p.Y) == oldColor) p.Y--;

p.Y++;

spLeft = spRight = false;

//looping on every oldColored pixel in column

while (p.Y < b.Height && b.GetPixel(p.X, p.Y) == oldColor) {

b.SetPixel(p.X, p.Y, state.currentColor); //setting new color

//checking if left pixel is oldColored and if it doesn't belong to span

if (!spLeft && p.X > 0 && b.GetPixel(p.X - 1, p.Y) == oldColor) {

st.Push(new Point(p.X - 1, p.Y));

spLeft = true;

}

//checking if left pixel isn't oldColored and if it belongs to span

else if (spLeft && p.X > 0 && b.GetPixel(p.X - 1, p.Y) != oldColor) {

spLeft = false;

}

if (!spRight && p.X < b.Width - 1 && b.GetPixel(p.X + 1, p.Y) == oldColor) {

st.Push(new Point(p.X + 1, p.Y));

spRight = true;

}

else if (spRight && p.X < b.Width - 1 && b.GetPixel(p.X + 1, p.Y) != oldColor) {

spRight = false;

}

p.Y++;

}

}

洪水填充算法_洪水填充算法分析相关推荐

  1. 洪水填充算法_洪水填充(Flood fill)算法

    洪水填充(Flood fill)算法 从一个起始节点开始把附近与其连通的节点提取出或填充成不同颜色颜色,直到封闭区域内的所有节点都被处理过为止,是从一个区域中提取若干个连通的点与其他相邻区域区分开(或 ...

  2. 洪水填充算法_基于GIS的洪水淹没范围计算

    03 收稿日期 : 2007 2 06 2 21; 修回日期 : 2007 2 07 2 16 作者简介 : 甘郝新 , 男 , 湖北宜昌人 , 主要从事水利信息化系统设计 . 研发工作. 在防洪减灾 ...

  3. 洪水填充算法_区域填充算法和多边形填充的扫描线算法

    本文主要介绍几种区域填充算法,重点解释多边形的扫描线填充算法,最后实现了多边形填充算法,包括在附录文件中.在参考[5]中,作者详细介绍了一系列区域填充算法,可以查看相应网页.代码的下载地址为:http ...

  4. c++多边形扫描线填充算法_基于3DGIS技术的梯形格网构建及其简化算法设计

    传统矢量地图LOD绘制流程包含简化.剖分与渲染三个步骤.由上述分析可知,传统矢量地图LOD绘制流程中简化与剖分是两个独立的过程,重复的剖分计算导致其渲染效率相对低下.梯形格网方法解决了传统方法中重复剖 ...

  5. c++多边形扫描线填充算法_基于MATLAB的道格拉斯普克算法递归实现

    道格拉斯普克算法 (道格拉斯-普克)Douglas-Peukcer算法由D.Douglas和T.Peueker于1973年提出,是线状要素抽稀的经典算法.用它处理大量冗余的几何数据点,既可以达到数据量 ...

  6. excel填充序列_序列填充你只会下拉?3种不同的填充方法都在这,你学会了吗?...

    填充序列是在Excel表格中经常要用到的操作,但有时仅仅用下拉填充序列,已经满足不了我们的需要,所以今天小编就给大家介绍几个针对不同情况的序列填充的方法. 1.行数自动修改序列号 在制作excel表格 ...

  7. python线性规划算法_线性规划的算法分析

    本章涉及知识点 1.线性规划的定义 2.可行区域.目标函数.可行解和最优解 3.转线性规划为标准型 4.转线性规划为松弛型 5.单纯形算法的思想和例子 6.避免退化-Bland规则 7.广义单纯形算法 ...

  8. 入门级图论算法:洪水填充算法

    洪水填充算法_洪水填充(Flood fill)算法 洪水填充算法_洪水填充(Flood fill)算法_滨封的博客-CSDN博客 洪水覆盖算法(Flood Fill):颜色填充 洪水覆盖算法(Floo ...

  9. 锦标赛排序、洪水填充算法、平衡规划

    锦标赛排序 锦标赛排序(胜者树,记录胜者) 锦标赛排序(胜者树,记录胜者) - Class Xman - 博客园 锦标赛排序(胜者树,记录胜者)_继续微笑lsj-CSDN博客_锦标赛排序 数据结构之树 ...

最新文章

  1. android 动态录音权限,Android如何判断手机是否有录音权限的工具类
  2. 23种设计模式C++源码与UML实现--命令模式
  3. 福州PHP讲师招聘_“艺”起就业|招聘信息汇总
  4. 博客园自动显示随笔标签
  5. android netty导入_Android Netty框架的使用
  6. 35 FI配置-财务会计-应收账款和应付账款-为客户定义备选统驭科目
  7. npm 下载 依赖包时出错的解决方式
  8. chrome 90的新功能(new feature in chrome 90)
  9. inurl news.php id,news.php
  10. powercfg -h off_万代 S.H.Figuarts「假面骑士01 金属腾蝗形态」
  11. 图神经网络概述(3):来自IEEE Fellow的GNN综述
  12. 想要写出漂亮文档,(表情图标)资源你值得收藏
  13. springboot 打卡功能_SpringBoot、SSM、ajax实现考勤打卡功能(详细实现),供新手参考!...
  14. python -- 计算 平方、乘方、平方根_python如何求平方
  15. 简单的Wifi网络概念
  16. Mybatis文件格式不匹配 -读取xml文件失败
  17. STUN, TURN, ICE介绍
  18. Mybatis 中的事务
  19. Studio One v4.6.2 x64 WiN 音乐制作编曲宿主软件下载
  20. 计算机分子模拟聚乙烯,用“分子模拟”软件构建聚乙烯分子、全同立构聚丙烯分子,并计算它们末端的直线距离-高分子物理-实验1-01...

热门文章

  1. 微信小程序使用canvas画布
  2. 电脑出现错误信息的故障排除
  3. 基于SpringBoot的校园志愿者管理系统
  4. 微信公众号如何分享课件PPT?
  5. 【旅游类APP源码】开发者案例开源,走过路过不可错过!
  6. DDK2000与VC6
  7. 绝了!多个激光雷达和相机的快速且鲁棒的外参标定方法(代码开源)
  8. arcos的matlab定义,基于MATLAB编程软的齿轮设计
  9. 在AID Learning中用IPad或电脑连接手机
  10. JAVA有percentile函数吗_五分位算法