⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用c#实现的图象处理(源代码)------正在更新中! - lijigang1982的专栏 - csdnblog.htm

📁 CS中一个关于图象处理的程序集合是一个好
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<BR>&nbsp;&nbsp;&nbsp;System.IntPtr Scan0 = bmData.Scan0; 
<BR>&nbsp;&nbsp;&nbsp;unsafe <BR>&nbsp;&nbsp;&nbsp;{ 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;byte * p = 
(byte *)(void *)Scan0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nOffset = stride - 
b.Width*3; <BR>&nbsp;&nbsp;&nbsp;&nbsp;int nWidth = b.Width * 
3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int 
y=0;y&lt;b.Height;++y)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for 
(int x = 0;&nbsp; x &lt; nWidth; 
++x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nVal 
= (int) (255-p[0]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0] = 
(byte)nVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p 
+= 
nOffset;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;b.UnlockBits(bmData);<BR>&nbsp;&nbsp;&nbsp;pictureBox1.Image=b;<BR>&nbsp;&nbsp;&nbsp;g.Dispose();<BR>//图象处理过程需要不少时间!应该修改下的!<BR>/*以下算法是我参考李兰友老师的《Visual 
C#图象处理设计实例》,里面它写到彩色图象<BR>&nbsp; 
的逆反处理算法是:<BR>&nbsp;rr=255-c.R;gg=255-c.G;bb=255-c.B;<BR>&nbsp;*/<BR>//&nbsp;&nbsp;&nbsp;this.label2.Text="图象反色效果图";<BR>//&nbsp;&nbsp;&nbsp;Color 
c = new Color();<BR>//&nbsp;&nbsp;&nbsp;Bitmap box1= new 
Bitmap(pictureBox1.Image);<BR>//&nbsp;&nbsp;&nbsp;for (int 
i=0;i&lt;this.pictureBox1.Image.Width;i++)<BR>//&nbsp;&nbsp;&nbsp;{<BR>//&nbsp;&nbsp;&nbsp;&nbsp;for 
(int 
j=0;j&lt;this.pictureBox1.Image.Height;j++)<BR>//&nbsp;&nbsp;&nbsp;&nbsp;{<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c=box1.GetPixel(i,j);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color 
c1 = 
Color.FromArgb(255-c.R,255-c.G,255-c.B);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box1.SetPixel(i,j,c1);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;}<BR>//&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Refresh();<BR>//&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Image=box1;<BR>//&nbsp;&nbsp;&nbsp;}<BR>//&nbsp;&nbsp;&nbsp;<BR>//&nbsp;&nbsp;&nbsp;g.Dispose();<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem19_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;Form2 newfrm2 = new 
Form2();<BR>&nbsp;&nbsp;&nbsp;newfrm2.ShowDialog();//使用这条语句,别的窗体就不能操作了!<BR>//&nbsp;&nbsp;&nbsp;newfrm2.Show(); 
//使用这条语句,还可以操作别的窗体!<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem18_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// 
this.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;Application.Exit();//用这条语句也可以的!<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem16_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{&nbsp;&nbsp; openFileDialog1=new 
OpenFileDialog();<BR>&nbsp;&nbsp;&nbsp;openFileDialog1.Filter = 
"Bitmap文件(*.bmp)|*.bmp| Jpeg文件(*.jpg)|*.jpg|所有合适文件(*.bmp / *.jpg)|*.bmp / 
*.jpg";<BR>&nbsp;&nbsp;&nbsp;openFileDialog1.FilterIndex = 2 
;<BR>&nbsp;&nbsp;&nbsp;openFileDialog1.RestoreDirectory = true 
;<BR>&nbsp;&nbsp;&nbsp;if(DialogResult.OK == 
openFileDialog1.ShowDialog())<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Image=Bitmap.FromFile(openFileDialog1.FileName,false);<BR>&nbsp;&nbsp;&nbsp;&nbsp;menuItem2.Visible=true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;menuItem3.Visible=true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;menuItem4.Visible=true;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;//if 
(pictureBox2.Image!=null) 
pictureBox2.Image=null;<BR>&nbsp;&nbsp;&nbsp;this.label1.Visible=true;<BR>&nbsp;&nbsp;&nbsp;m_copybitmap=new 
Bitmap(this.pictureBox1.Image);<BR>&nbsp;&nbsp;&nbsp;menuItem17.Visible=true;<BR>&nbsp;&nbsp;&nbsp;menuItem25.Visible=true;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
//有个问题,就是pictureBox1没有保持同图象的大小而变化,这样,使得图形有变形的<BR>&nbsp;&nbsp;&nbsp; 
//可能<BR>&nbsp;&nbsp;private void menuItem17_Click(object sender, 
System.EventArgs e)<BR>&nbsp;&nbsp;{&nbsp;&nbsp; 
<BR>&nbsp;&nbsp;&nbsp;m_bitmap=new 
Bitmap(pictureBox1.Image);//这很关键,若删除将无法看到处理后的效果!<BR>&nbsp;&nbsp;&nbsp;saveFileDialog1 
= new SaveFileDialog();<BR>&nbsp;&nbsp;&nbsp;saveFileDialog1.Filter = 
"Bitmap文件(*.bmp)|*.bmp|Jpeg文件(*.jpg)|*.jpg|所有合适文件(*.bmp / *.jpg)|*.bmp / 
*.jpg";<BR>&nbsp;&nbsp;&nbsp;saveFileDialog1.FilterIndex = 2 
;<BR>&nbsp;&nbsp;&nbsp;saveFileDialog1.RestoreDirectory = true 
;<BR>&nbsp;&nbsp;&nbsp;if(DialogResult.OK == 
saveFileDialog1.ShowDialog())<BR>&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_bitmap.Save(saveFileDialog1.FileName);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void Form1_Load(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem20_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{&nbsp;&nbsp; <BR>/*以下算法是我参考李兰友老师的《Visual 
C#图象处理设计实例》,里面它写到彩色图象的浮雕算法是:<BR>&nbsp;g(i,j)=f(i,j)-f(i-1,j)+常数(常数通常取128)<BR>&nbsp;eg:rr=Math.Abs(r2-r1+128)<BR>&nbsp;我按照它的方法运行了下,效果和用上面程序实现的效果差异很大!<BR>&nbsp;*/<BR>//this.label2.Text="图象浮雕效果图";<BR>&nbsp;&nbsp;&nbsp;Graphics 
g = this.CreateGraphics ( ) 
;<BR>&nbsp;&nbsp;&nbsp;g.Clear(this.BackColor);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Bitmap box1= new Bitmap(pictureBox1.Image);<BR>&nbsp;&nbsp;&nbsp;for (int 
i=0;i&lt;pictureBox1.Image.Width-1;i++)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int 
j=0;j&lt;pictureBox1.Image.Height-1;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color 
Color1=box1.GetPixel(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color 
Color2=box1.GetPixel(i+1,j+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
red=Math.Abs(Color1.R-Color2.R+128);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
green=Math.Abs(Color1.G-Color2.G+128);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
blue=Math.Abs(Color1.B-Color2.B+128);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//颜色处理<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(red&gt;255)&nbsp;&nbsp;red=255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(red&lt;0)&nbsp;&nbsp;red=0;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(green&gt;255)&nbsp;green=255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(green&lt;0)&nbsp;&nbsp;green=0;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(blue&gt;255)&nbsp;blue=255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(blue&lt;0)&nbsp;&nbsp;blue=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box1.SetPixel(i,j,Color.FromArgb(red,green,blue));<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Refresh();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Image=box1;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;g.Dispose();<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem23_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;Graphics g = 
this.CreateGraphics ( ) 
;<BR>&nbsp;&nbsp;&nbsp;g.Clear(this.BackColor);<BR>&nbsp;&nbsp;&nbsp;Form3 
newform3=new 
Form3();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
newform3.Text="设置图象的亮度!";<BR>&nbsp;&nbsp;&nbsp;newform3.ShowDialog(this);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;brightness=(int)newform3.trackBar1.Value;<BR>&nbsp;&nbsp;&nbsp;newform3.Dispose();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Bitmap b= new Bitmap(pictureBox1.Image);<BR>&nbsp;&nbsp;&nbsp;// GDI+ return 
format is BGR, NOT RGB. <BR>&nbsp;&nbsp;&nbsp;BitmapData bmData = b.LockBits(new 
Rectangle(0, 0, b.Width, b.Height), 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;ImageLockMode.ReadWrite, 
PixelFormat.Format24bppRgb); <BR>&nbsp;&nbsp;&nbsp;int stride = bmData.Stride; 
<BR>&nbsp;&nbsp;&nbsp;System.IntPtr Scan0 = bmData.Scan0; 
<BR>&nbsp;&nbsp;&nbsp;unsafe <BR>&nbsp;&nbsp;&nbsp;{ 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;byte * p = 
(byte *)(void *)Scan0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nOffset = stride - 
b.Width*3; <BR>&nbsp;&nbsp;&nbsp;&nbsp;int nWidth = b.Width * 
3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int 
y=0;y&lt;b.Height;++y)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for 
(int x = 0;&nbsp; x &lt; nWidth; 
++x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nVal 
= (int) (p[0] + brightness);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (nVal 
&lt; 0) nVal = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (nVal &gt; 255) nVal 
= 255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0] = 
(byte)nVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p 
+= 
nOffset;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;b.UnlockBits(bmData);<BR>&nbsp;&nbsp;&nbsp;pictureBox1.Image=b;<BR>&nbsp;&nbsp;&nbsp;g.Dispose();<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem21_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;Graphics g = this.CreateGraphics ( ) 
;//用CreateGraphices()方法创建Graphics对象,这样最好有释放操作!<BR>&nbsp;&nbsp;&nbsp;g.Clear(this.BackColor);//清除背景上可能存在的图案<BR>&nbsp;&nbsp;&nbsp;// 
GDI+ return format is BGR, NOT RGB. <BR>&nbsp;&nbsp;&nbsp;Bitmap b= new 
Bitmap(pictureBox1.Image);<BR>&nbsp;&nbsp;&nbsp;BitmapData bmData = 
b.LockBits(new Rectangle(0, 0, b.Width, b.Height), 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageLockMode.ReadWrite, 
PixelFormat.Format24bppRgb);//将指定区域的图象锁定到内存 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int stride = bmData.Stride; // bytes in 
a row 3*b.Width,获取或设置扫描宽度<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.IntPtr 
Scan0 = 
bmData.Scan0;//获取或者设置位图中第一个像素数据的地址,它可以看成是位图中第一个扫描行<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsafe 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte * p = (byte *)(void 
*)Scan0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte red, green, 
blue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int nOffset = stride - 
b.Width*3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int y=0;y &lt; 
b.Height;++y)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int 
x=0; x &lt; b.Width; ++x 
)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blue 
= p[0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;green = 
p[1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red = 
p[2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0] = p[1] = 
p[2] = (byte)(.299 * red 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ .587 * green + 
.114 * blue);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p += 
3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p 
+= 
nOffset;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.UnlockBits(bmData);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Image=b;<BR>&nbsp;&nbsp;&nbsp;g.Dispose();<BR>/*以下算法是我参考李兰友老师的《Visual 
C#图象处理设计实例》,里面它写到彩色图象的灰度算法是:<BR>&nbsp;rr=(c.R/64)*64;gg=(c.G/64)*64;bb=(c.B/64)*64;<BR>&nbsp;我按照它的方法运行了下,效果和用上面程序实现的效果差异很大!<BR>&nbsp;*/ 
<BR>//&nbsp;&nbsp;&nbsp;this.label2.Text="灰度效果图";<BR>//&nbsp;&nbsp;&nbsp;Bitmap 
box1= new Bitmap(pictureBox1.Image);<BR>//&nbsp;&nbsp;&nbsp;for (int 
i=0;i&lt;pictureBox1.Image.Width-1;i++)<BR>//&nbsp;&nbsp;&nbsp;{<BR>//&nbsp;&nbsp;&nbsp;&nbsp;for(int 
j=0;j&lt;pictureBox1.Image.Height-1;j++)<BR>//&nbsp;&nbsp;&nbsp;&nbsp;{<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color 
Color1=box1.GetPixel(i,j);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
red=Math.Abs((Color1.R/128)*128);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
green=Math.Abs((Color1.G/128)*128);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
blue=Math.Abs((Color1.B/128)*128);<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//颜色处理<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(red&gt;255)&nbsp;&nbsp;red=255;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(red&lt;0)&nbsp;&nbsp;red=0;<BR>//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(green&gt;255)&nbsp;green=255;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(green&lt;0)&nbsp;&nbsp;green=0;<BR>//<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(blue&gt;255)&nbsp;blue=255;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(blue&lt;0)&nbsp;&nbsp;blue=0;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box1.SetPixel(i,j,Color.FromArgb(red,green,blue));<BR>//&nbsp;&nbsp;&nbsp;&nbsp;}<BR>//&nbsp;&nbsp;&nbsp;&nbsp;pictureBox2.Refresh();<BR>//&nbsp;&nbsp;&nbsp;&nbsp;pictureBox2.Image=box1;<BR>//&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;private 
void menuItem22_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;Graphics g = this.CreateGraphics ( ) 
;<BR>&nbsp;&nbsp;&nbsp;g.Clear(this.BackColor);<BR>&nbsp;&nbsp;&nbsp;Form3 
newform3=new 
Form3();<BR>&nbsp;&nbsp;&nbsp;newform3.Text="设置图象的噪声值!";<BR>&nbsp;&nbsp;&nbsp;newform3.ShowDialog(this);<BR>&nbsp;&nbsp;&nbsp;brightness=(int)newform3.trackBar1.Value;<BR>&nbsp;&nbsp;&nbsp;newform3.Dispose();<BR>&nbsp;&nbsp;&nbsp;Bitmap 
b= new Bitmap(pictureBox1.Image);<BR>&nbsp;&nbsp;&nbsp;// GDI+ return format is 
BGR, NOT RGB. <BR>&nbsp;&nbsp;&nbsp;BitmapData bmData = b.LockBits(new 
Rectangle(0, 0, b.Width, b.Height), 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;ImageLockMode.ReadWrite, 
PixelFormat.Format24bppRgb); <BR>&nbsp;&nbsp;&nbsp;int stride = bmData.Stride; 
<BR>&nbsp;&nbsp;&nbsp;System.IntPtr Scan0 = bmData.Scan0; 
<BR>&nbsp;&nbsp;&nbsp;unsafe <BR>&nbsp;&nbsp;&nbsp;{ 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;byte * p = 
(byte *)(void *)Scan0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nOffset = stride - 
b.Width*3; <BR>&nbsp;&nbsp;&nbsp;&nbsp;int nWidth = b.Width * 
3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int 
y=0;y&lt;b.Height;++y)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for 
(int x = 0;&nbsp; x &lt; nWidth; 
++x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nVal 
= (int) (p[0] - brightness);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (nVal 
&lt; 0) nVal = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (nVal &gt; 255) nVal 
= 255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0] = 
(byte)nVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p 
+= 
nOffset;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;b.UnlockBits(bmData);<BR>&nbsp;&nbsp;&nbsp;pictureBox1.Image=b;<BR>&nbsp;&nbsp;&nbsp;g.Dispose();<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem7_Click(object sender, System.EventArgs 
e)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;Graphics g = this.CreateGraphics ( ) 
;<BR>&nbsp;&nbsp;&nbsp;g.Clear(this.BackColor);<BR>&nbsp;&nbsp;&nbsp;Color c1 
=new Color();<BR>&nbsp;&nbsp;&nbsp;Color c2 =new 
Color();<BR>&nbsp;&nbsp;&nbsp;Color c3 =new Color();<BR>&nbsp;&nbsp;&nbsp;Color 
c4 =new Color();<BR>&nbsp;&nbsp;&nbsp;Color c5=new 
Color();<BR>&nbsp;&nbsp;&nbsp;Color c6 =new Color();<BR>&nbsp;&nbsp;&nbsp;Color 
c7 =new Color();<BR>&nbsp;&nbsp;&nbsp;Color c8 = new 
Color();<BR>&nbsp;&nbsp;&nbsp;Color c9=new Color();<BR>&nbsp;&nbsp;&nbsp;Bitmap 
box1= new Bitmap(pictureBox1.Image);<BR>&nbsp;&nbsp;&nbsp;for (int 
i=1;i&lt;this.pictureBox1.Image.Width-1;i++)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;for 
(int 
j=1;j&lt;this.pictureBox1.Image.Height-1;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c1=box1.GetPixel(i-1,j-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c2=box1.GetPixel(i,j-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c3=box1.GetPixel(i+1,j-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c4=box1.GetPixel(i-1,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c5=box1.GetPixel(i,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c6=box1.GetPixel(i+1,j);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c7=box1.GetPixel(i-1,j+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c8=box1.GetPixel(i,j+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c9=box1.GetPixel(i+1,j+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
rr=Math.Abs((c1.R+c2.R+c3.R+c4.R+c5.R+c6.R+c7.R+c8.R+c9.R)/9);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rr&lt;0) 
rr=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rr&gt;255) 
rr=255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
gg=Math.Abs((c1.G+c2.G+c3.G+c4.G+c5.G+c6.G+c7.G+c8.G+c9.G)/9);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(gg&lt;0) 
gg=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(gg&gt;255) 
gg=255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int 
bb=Math.Abs((c1.B+c2.B+c3.B+c4.B+c5.B+c6.B+c7.B+c8.B+c9.B)/9);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(bb&lt;0) 
bb=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(bb&gt;255) 
bb=255;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color c = 
Color.FromArgb(rr,gg,bb);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box1.SetPixel(i,j,c);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Refresh();<BR>&nbsp;&nbsp;&nbsp;&nbsp;pictureBox1.Image=box1;<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;g.Dispose();<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;private void menuItem8_Click(object sender, System.EventArgs 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -