using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace Image{/// <summary>/// Form1 的摘要说明。/// </summary>public class Form1 : System.Windows.Forms.Form{private System.Windows.Forms.Button button1;private System.Windows.Forms.OpenFileDialog openFileDialog1;private System.Drawing.Bitmap MyBitmap;private string MyFileName="";private System.Windows.Forms.PictureBox pictureBox1;private System.Windows.Forms.Button button2;private System.Windows.Forms.Button button3;/// <summary>/// 必需的设计器变量。/// </summary>private System.ComponentModel.Container components = null;public Form1(){//// Windows 窗体设计器支持所必需的//InitializeComponent();//// TODO: 在 InitializeComponent 调用后添加任何构造函数代码//}/// <summary>/// 清理所有正在使用的资源。/// </summary>protected override void Dispose( bool disposing ){if( disposing ){if (components != null) {components.Dispose();}}base.Dispose( disposing );}#region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法 - 不要使用代码编辑器修改/// 此方法的内容。/// </summary>private void InitializeComponent(){System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));this.button1 = new System.Windows.Forms.Button();this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();this.pictureBox1 = new System.Windows.Forms.PictureBox();this.button2 = new System.Windows.Forms.Button();this.button3 = new System.Windows.Forms.Button();this.SuspendLayout();// // button1// this.button1.Location = new System.Drawing.Point(8, 168);this.button1.Name = "button1";this.button1.Size = new System.Drawing.Size(72, 23);this.button1.TabIndex = 1;this.button1.Text = "浏览图像";this.button1.Click = new System.EventHandler(this.button1_Click);// // openFileDialog1// this.openFileDialog1.Filter = "Image files (JPeg, Gif, Bmp, etc.)|*.jpg;*.jpeg;*.gif;*.bmp;*.tif; *.tiff; *.png|" " JPeg files (*.jpg;*.jpeg)|*.jpg;*.jpeg |GIF files (*.gif)|*.gif |BMP files (*.b" "mp)|*.bmp|Tiff files (*.tif;*.tiff)|*.tif;*.tiff|Png files (*.png)| *.png |All f" "iles (*.*)|*.*";// // pictureBox1// this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));this.pictureBox1.Location = new System.Drawing.Point(8, 8);this.pictureBox1.Name = "pictureBox1";this.pictureBox1.Size = new System.Drawing.Size(296, 152);this.pictureBox1.TabIndex = 3;this.pictureBox1.TabStop = false;// // button2// this.button2.Location = new System.Drawing.Point(80, 168);this.button2.Name = "button2";this.button2.Size = new System.Drawing.Size(112, 23);this.button2.TabIndex = 4;this.button2.Text = "马赛克显示图像";this.button2.Click = new System.EventHandler(this.button2_Click);// // button3// this.button3.Location = new System.Drawing.Point(192, 168);this.button3.Name = "button3";this.button3.Size = new System.Drawing.Size(112, 23);this.button3.TabIndex = 5;this.button3.Text = "马赛克退隐图像";this.button3.Click = new System.EventHandler(this.button3_Click);// // Form1// this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));this.ClientSize = new System.Drawing.Size(312, 198);this.Controls.Add(this.button3);this.Controls.Add(this.button2);this.Controls.Add(this.pictureBox1);this.Controls.Add(this.button1);this.MaximizeBox = false;this.Name = "Form1";this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;this.Text = "演示图像马赛克显示";this.ResumeLayout(false);}#endregion/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main() {Application.Run(new Form1());}private void button1_Click(object sender, System.EventArgs e){//浏览图像文件this.openFileDialog1.ShowDialog();if(this.openFileDialog1.FileName.Trim()=="")return;try{ //得到原始大小的图像MyFileName=this.openFileDialog1.FileName;Bitmap SrcBitmap=new Bitmap(MyFileName);//得到缩放后的图像MyBitmap=new Bitmap(SrcBitmap,this.pictureBox1.Width,this.pictureBox1.Height);this.pictureBox1.Image=MyBitmap;}catch(Exception Err){MessageBox.Show(this,"打开图像文件错误!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);}}private void button2_Click(object sender, System.EventArgs e){//以马赛克方式显示图像if(this.MyFileName.Length<2){MessageBox.Show("请首先单击“浏览图像”按钮选择图像","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);return;} int dw=MyBitmap.Width/50;int dh=MyBitmap.Height/50;Graphics g=this.pictureBox1.CreateGraphics();g.Clear(Color.Gray); Point []MyPoint=new Point[2500];for(int x=0;x<50;x )for(int y=0;y<50;y ){MyPoint[x*50 y].X=x*dw;MyPoint[x*50 y].Y=y*dh;}Bitmap bitmap=new Bitmap(MyBitmap.Width,MyBitmap.Height);for(int i=0;i<10000;i ){System.Random MyRandom=new Random();int iPos=MyRandom.Next(2500);for(int m=0;m<dw;m )for(int n=0;n<dh;n ){bitmap.SetPixel(MyPoint[iPos].X m,MyPoint[iPos].Y n,MyBitmap.GetPixel(MyPoint[iPos].X m,MyPoint[iPos].Y n));}this.pictureBox1.Refresh();this.pictureBox1.Image=bitmap;}for(int i=0;i<2500;i )for(int m=0;m<dw;m )for(int n=0;n<dh;n ){bitmap.SetPixel(MyPoint[i].X m,MyPoint[i].Y n,MyBitmap.GetPixel(MyPoint[i].X m,MyPoint[i].Y n));}this.pictureBox1.Refresh();this.pictureBox1.Image=bitmap;}private void button3_Click(object sender, System.EventArgs e){//以马赛克方式退隐图像if(this.MyFileName.Length<2){MessageBox.Show("请首先单击“浏览图像”按钮选择图像","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);return;} MyBitmap=(Bitmap)this.pictureBox1.Image.Clone();int dw=MyBitmap.Width/50;int dh=MyBitmap.Height/50;Graphics g=this.pictureBox1.CreateGraphics();Point []MyPoint=new Point[2500];for(int x=0;x<50;x )for(int y=0;y<50;y ){MyPoint[x*50 y].X=x*dw;MyPoint[x*50 y].Y=y*dh;}Bitmap bitmap=new Bitmap(MyBitmap.Width,MyBitmap.Height);for(int i=0;i<2500;i )for(int m=0;m<dw;m )for(int n=0;n<dh;n ){bitmap.SetPixel(MyPoint[i].X m,MyPoint[i].Y n,MyBitmap.GetPixel(MyPoint[i].X m,MyPoint[i].Y n));}this.pictureBox1.Refresh();this.pictureBox1.Image=bitmap;bitmap=(Bitmap)this.pictureBox1.Image.Clone();for(int i=0;i<10000;i ){System.Random MyRandom=new Random();int iPos=MyRandom.Next(2500);for(int m=0;m<dw;m )for(int n=0;n<dh;n ){bitmap.SetPixel(MyPoint[iPos].X m,MyPoint[iPos].Y n,this.pictureBox1.BackColor);}this.pictureBox1.Refresh();this.pictureBox1.Image=bitmap;}for(int i=0;i<2500;i )for(int m=0;m<dw;m )for(int n=0;n<dh;n ){bitmap.SetPixel(MyPoint[i].X m,MyPoint[i].Y n,this.pictureBox1.BackColor);}g.Clear(this.pictureBox1.BackColor); }}}
评论