资源简介
计算机图形学 扫描线种子填充算法实现
1、初始化堆栈。
2、种子压入堆栈。
3、while(堆栈非空)
{
(1)从堆栈弹出种子象素。
(2)如果种子象素尚未填充,则:
a.求出种子区段:xleft、xright;
b.填充整个区段。
c.检查相邻的上扫描线的xleft≤x≤xright区间内,是否存在需要填充的新区段,如果存在的话,则把每个新区段在xleft≤x≤xright范围内的最右边的象素,作为新的种子象素依次压入堆栈。
d.检查相邻的下扫描线的xleft≤x≤xright区间内,是否存在需要填充的新区段,如果存在的话,则把每个新区段在 xleft≤x≤xright范围内的最右边的象素,作为新的种子象素依次压入堆栈。
}
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace ImageTest
{
public partial class Form1 : Form
{
private Bitmap _bmp;//存放位图
private byte[] rgbValues;//存放位图数据
private int WidthOfBmp;//位图的宽度
private int point_X point_Y;//记录鼠标某时刻点击的位置
private bool isNeedFill = false;//记录是否标记要填充
private List stack = new List();//用来模拟实现堆栈的动态数组0为栈底,长度为栈顶
// | 7 | 栈顶
// | 6 |
// | 5 |
// | 4 |
// | 3 |
// | 2 |
// | 1 |
// | 0 | 栈底
public Form1()
{
InitializeComponent();
_bmp = new Bitmap(this.pictureBox1.Image);
}
#region 打开文件
private void button2_Click(object sender EventArgs e)
{
try
{
OpenFileDialog newOFD = new OpenFileDialog();
newOFD.Filter = “图片文件(*.jpg*.gif*.bmp*.png)|*.jpg;*.gif;*.bmp;*.png“;
newOFD.title = “打开图片“;
newOFD.RestoreDirectory = true;
if (newOFD.ShowDialog() == DialogResult.OK)
{
try
{
//得到文件名及路径
string sPicPaht = newOFD.FileName.ToString();
this.pictureBox1.Image = new Bitmap(sPicPaht);
_bmp = new Bitmap(this.pictureBox1.Image);
WidthOfBmp = _bmp.Width;
isNeedFill = false;
button3.Text = “开始填充“;
pictureBox1.Cursor = Cursors.Default;
Refresh();
}
catch (Exception)
{
MessageBox.Show(string.Format(“无效图像文件 {0} !“ newOFD.FileName) “无效位图文件“ MessageBoxButtons.OK MessageBoxIcon.Exclamation);
}
}
}
catch (Exception h)
{
MessageBox.Show(h.Message.ToString());
}
}
#endregion
#region 拾取颜色
private void panel_getColor_MouseClick(object sender MouseEventArgs e)
{
ColorDialog colorDialog = new ColorDialog();
colorDialog.AllowFullOpen = true;
colorDialog.FullOpen = true;
colorDialog.ShowHelp = true;
colorDialog.Color = Color.White;//初始化当前文本框中的字体颜色,当用户在ColorDialog对话框中点击“取消“按钮
colorDialog.ShowDialog();
this.panel_getColor.BackColor = colorDialog.Color;
}
#endregion
#region 判断颜色是否在容差范围
///
/// 判断颜色是否在容差范围
///
///
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 56832 2010-04-19 18:03 ImageTest\ImageTest\bin\Debug\ImageTest.exe
文件 38400 2010-04-19 18:03 ImageTest\ImageTest\bin\Debug\ImageTest.pdb
文件 14328 2010-04-19 18:03 ImageTest\ImageTest\bin\Debug\ImageTest.vshost.exe
文件 14802 2010-04-19 17:25 ImageTest\ImageTest\Form1.cs
文件 8724 2010-04-19 17:08 ImageTest\ImageTest\Form1.Designer.cs
文件 67729 2010-04-19 17:08 ImageTest\ImageTest\Form1.resx
文件 4041 2010-04-19 18:02 ImageTest\ImageTest\ImageTest.csproj
文件 1830 2010-04-19 18:03 ImageTest\ImageTest\obj\Debug\ImageTest.csproj.FileListAbsolute.txt
文件 847 2010-04-19 17:08 ImageTest\ImageTest\obj\Debug\ImageTest.csproj.GenerateResource.Cache
文件 56832 2010-04-19 18:03 ImageTest\ImageTest\obj\Debug\ImageTest.exe
文件 41562 2010-04-19 18:03 ImageTest\ImageTest\obj\Debug\ImageTest.Form1.resources
文件 38400 2010-04-19 18:03 ImageTest\ImageTest\obj\Debug\ImageTest.pdb
文件 180 2010-04-19 18:03 ImageTest\ImageTest\obj\Debug\ImageTest.Properties.Resources.resources
文件 546 2010-04-19 18:02 ImageTest\ImageTest\obj\Release\ImageTest.csproj.FileListAbsolute.txt
文件 847 2010-04-19 18:02 ImageTest\ImageTest\obj\Release\ImageTest.csproj.GenerateResource.Cache
文件 55808 2010-04-19 18:02 ImageTest\ImageTest\obj\Release\ImageTest.exe
文件 41562 2010-04-19 18:02 ImageTest\ImageTest\obj\Release\ImageTest.Form1.resources
文件 26112 2010-04-19 18:02 ImageTest\ImageTest\obj\Release\ImageTest.pdb
文件 180 2010-04-19 18:02 ImageTest\ImageTest\obj\Release\ImageTest.Properties.Resources.resources
文件 578 2010-04-19 18:02 ImageTest\ImageTest\obj\x86\Release\ImageTest.csproj.FileListAbsolute.txt
文件 847 2010-04-19 18:02 ImageTest\ImageTest\obj\x86\Release\ImageTest.csproj.GenerateResource.Cache
文件 55808 2010-04-19 18:02 ImageTest\ImageTest\obj\x86\Release\ImageTest.exe
文件 41562 2010-04-19 18:02 ImageTest\ImageTest\obj\x86\Release\ImageTest.Form1.resources
文件 26112 2010-04-19 18:02 ImageTest\ImageTest\obj\x86\Release\ImageTest.pdb
文件 180 2010-04-19 18:02 ImageTest\ImageTest\obj\x86\Release\ImageTest.Properties.Resources.resources
文件 470 2010-04-03 16:19 ImageTest\ImageTest\Program.cs
文件 1350 2010-04-03 16:19 ImageTest\ImageTest\Properties\AssemblyInfo.cs
文件 2868 2010-04-03 16:19 ImageTest\ImageTest\Properties\Resources.Designer.cs
文件 5612 2010-04-03 16:19 ImageTest\ImageTest\Properties\Resources.resx
文件 1094 2010-04-03 16:19 ImageTest\ImageTest\Properties\Settings.Designer.cs
............此处省略22个文件信息
- 上一篇:C# 利用反射动态创建对象
- 下一篇:razor-converter
评论
共有 条评论