資源簡介
計算機圖形學 掃描線種子填充算法實現
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
評論
共有 條評論