www.pudn.com > 21095925320.rar > Form1.cs


using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
 
namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
        public Form1() 
        { 
            InitializeComponent(); 
        } 
 
        private void button1_Click(object sender, EventArgs e) 
        {//浏览图像文件 
            OpenFileDialog MyDlg = new OpenFileDialog(); 
            MyDlg.Filter = "图像文件(JPeg, Gif, Bmp, etc.)|*.jpg;*.jpeg;*.gif;*.bmp;*.tif; *.tiff; *.png| JPeg 图像文件(*.jpg;*.jpeg)|*.jpg;*.jpeg |GIF 图像文件(*.gif)|*.gif |BMP图像文件(*.bmp)|*.bmp|Tiff图像文件(*.tif;*.tiff)|*.tif;*.tiff|Png图像文件(*.png)| *.png |所有文件(*.*)|*.*"; 
            if (MyDlg.ShowDialog() == DialogResult.OK) 
            { 
                Bitmap MyBitmap = new Bitmap(MyDlg.FileName); 
                this.pictureBox1.Image = MyBitmap; 
            } 
        } 
 
        private void button2_Click(object sender, EventArgs e) 
        {//以底片效果显示图像 
            try 
            { 
                int Height = this.pictureBox1.Image.Height; 
                int Width = this.pictureBox1.Image.Width; 
                Bitmap bitmap = new Bitmap(Width, Height); 
                Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; 
                Color pixel; 
                for (int x = 1; x < Width; x++) 
                { 
                    for (int y = 1; y < Height; y++) 
                    { 
                        int r, g, b; 
                        pixel = MyBitmap.GetPixel(x, y); 
                        r = 255 - pixel.R; 
                        g = 255 - pixel.G; 
                        b = 255 - pixel.B; 
                        bitmap.SetPixel(x, y, Color.FromArgb(r, g, b)); 
                    } 
                } 
                this.pictureBox1.Image = bitmap; 
            } 
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
            } 
        } 
 
        private void button3_Click(object sender, EventArgs e) 
        {//以浮雕效果显示图像 
            try 
            { 
                int Height = this.pictureBox1.Image.Height; 
                int Width = this.pictureBox1.Image.Width; 
                Bitmap bitmap = new Bitmap(Width, Height); 
                Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; 
                Color pixel1, pixel2; 
                for (int x = 0; x < Width - 1; x++) 
                { 
                    for (int y = 0; y < Height - 1; y++) 
                    { 
                        int r = 0, g = 0, b = 0; 
                        pixel1 = MyBitmap.GetPixel(x, y); 
                        pixel2 = MyBitmap.GetPixel(x + 1, y + 1); 
                        r = Math.Abs(pixel1.R - pixel2.R + 128); 
                        g = Math.Abs(pixel1.G - pixel2.G + 128); 
                        b = Math.Abs(pixel1.B - pixel2.B + 128); 
                        if (r > 255) 
                            r = 255; 
                        if (r < 0) 
                            r = 0; 
                        if (g > 255) 
                            g = 255; 
                        if (g < 0) 
                            g = 0; 
                        if (b > 255) 
                            b = 255; 
                        if (b < 0) 
                            b = 0; 
                        bitmap.SetPixel(x, y, Color.FromArgb(r, g, b)); 
                    } 
                } 
                this.pictureBox1.Image = bitmap; 
            } 
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
            } 
        } 
 
        private void button4_Click(object sender, EventArgs e) 
        {//以黑白效果显示图像 
            try 
            { 
                int Height = this.pictureBox1.Image.Height; 
                int Width = this.pictureBox1.Image.Width; 
                Bitmap bitmap = new Bitmap(Width, Height); 
                Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; 
                Color pixel; 
                for (int x = 0; x < Width; x++) 
                    for (int y = 0; y < Height; y++) 
                    { 
                        pixel = MyBitmap.GetPixel(x, y); 
                        int r, g, b, Result = 0; 
                        r = pixel.R; 
                        g = pixel.G; 
                        b = pixel.B; 
                        //实例程序以加权平均值法产生黑白图像 
                        int iType = 2; 
                        switch (iType) 
                        { 
                            case 0://平均值法 
                                Result = ((r + g + b) / 3); 
                                break; 
                            case 1://最大值法 
                                Result = r > g ? r : g; 
                                Result = Result > b ? Result : b; 
                                break; 
                            case 2://加权平均值法 
                                Result = ((int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b)); 
                                break; 
                        } 
                        bitmap.SetPixel(x, y, Color.FromArgb(Result, Result, Result)); 
                    } 
                this.pictureBox1.Image = bitmap;		 
            } 
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
            } 
        } 
 
        private void button5_Click(object sender, EventArgs e) 
        {//以柔化效果显示图像 
            try 
            { 
                int Height = this.pictureBox1.Image.Height; 
                int Width = this.pictureBox1.Image.Width; 
                Bitmap bitmap = new Bitmap(Width, Height); 
                Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; 
                Color pixel; 
                //高斯模板 
                int[] Gauss ={ 1, 2, 1, 2, 4, 2, 1, 2, 1 }; 
                for (int x = 1; x < Width - 1; x++) 
                    for (int y = 1; y < Height - 1; y++) 
                    { 
                        int r = 0, g = 0, b = 0; 
                        int Index = 0; 
                        for (int col = -1; col <= 1; col++) 
                            for (int row = -1; row <= 1; row++) 
                            { 
                                pixel = MyBitmap.GetPixel(x + row, y + col); 
                                r += pixel.R * Gauss[Index]; 
                                g += pixel.G * Gauss[Index]; 
                                b += pixel.B * Gauss[Index]; 
                                Index++; 
                            } 
                        r /= 16; 
                        g /= 16; 
                        b /= 16; 
                        //处理颜色值溢出 
                        r = r > 255 ? 255 : r; 
                        r = r < 0 ? 0 : r; 
                        g = g > 255 ? 255 : g; 
                        g = g < 0 ? 0 : g; 
                        b = b > 255 ? 255 : b; 
                        b = b < 0 ? 0 : b; 
                        bitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b)); 
                    } 
                this.pictureBox1.Image = bitmap;		 
            } 
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
            } 
        } 
 
        private void button6_Click(object sender, EventArgs e) 
        {//以锐化效果显示图像 
            try 
            { 
                int Height = this.pictureBox1.Image.Height; 
                int Width = this.pictureBox1.Image.Width; 
                Bitmap bitmap = new Bitmap(Width, Height); 
                Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; 
                Color pixel; 
                //拉普拉斯模板 
                int[] Laplacian ={ -1, -1, -1, -1, 9, -1, -1, -1, -1 }; 
                for (int x = 1; x < Width - 1; x++) 
                    for (int y = 1; y < Height - 1; y++) 
                    { 
                        int r = 0, g = 0, b = 0; 
                        int Index = 0; 
                        for (int col = -1; col <= 1; col++) 
                            for (int row = -1; row <= 1; row++) 
                            { 
                                pixel = MyBitmap.GetPixel(x + row, y + col); r += pixel.R * Laplacian[Index]; 
                                g += pixel.G * Laplacian[Index]; 
                                b += pixel.B * Laplacian[Index]; 
                                Index++; 
                            } 
                        //处理颜色值溢出 
                        r = r > 255 ? 255 : r; 
                        r = r < 0 ? 0 : r; 
                        g = g > 255 ? 255 : g; 
                        g = g < 0 ? 0 : g; 
                        b = b > 255 ? 255 : b; 
                        b = b < 0 ? 0 : b; 
                        bitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b)); 
                    } 
                this.pictureBox1.Image = bitmap;		 
            } 
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
            } 
        } 
 
        private void button7_Click(object sender, EventArgs e) 
        {//以雾化效果显示图像 
            try 
            { 
                int Height = this.pictureBox1.Image.Height; 
                int Width = this.pictureBox1.Image.Width; 
                Bitmap bitmap = new Bitmap(Width, Height); 
                Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; 
                Color pixel; 
                for (int x = 1; x < Width - 1; x++) 
                    for (int y = 1; y < Height - 1; y++) 
                    { 
                        System.Random MyRandom = new Random(); 
                        int k = MyRandom.Next(123456); 
                        //像素块大小 
                        int dx = x + k % 19; 
                        int dy = y + k % 19; 
                        if (dx >= Width) 
                            dx = Width - 1; 
                        if (dy >= Height) 
                            dy = Height - 1; 
                        pixel = MyBitmap.GetPixel(dx, dy); 
                        bitmap.SetPixel(x, y, pixel); 
                    } 
                this.pictureBox1.Image = bitmap;		 
            } 
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 
            } 
        } 
 
        private void button8_Click(object sender, EventArgs e) 
        {//以光照效果显示图像 
            Graphics MyGraphics= this.pictureBox1.CreateGraphics(); 
            MyGraphics.Clear(Color.White); 
            Bitmap MyBmp = new Bitmap(this.pictureBox1.Image, this.pictureBox1.Width, this.pictureBox1.Height); 
	        int MyWidth=MyBmp.Width; 
	        int MyHeight=MyBmp.Height; 
	        Bitmap MyImage=MyBmp.Clone(new RectangleF(0,0,MyWidth,MyHeight),System.Drawing.Imaging.PixelFormat.DontCare); 
         	int A=Width/2; 
	        int B=Height/2; 
	        //MyCenter图片中心点,发亮此值会让强光中心发生偏移 
	        Point MyCenter=new Point(MyWidth/2,MyHeight/2);	   
	        //R强光照射面的半径,即”光晕” 
	        int R=Math.Min(MyWidth/2,MyHeight/2); 
	        for(int i=MyWidth-1; i>=1;i--) 
	        { 
		        for( int j=MyHeight-1; j>=1;j--) 
		        { 
			        float MyLength=(float)Math.Sqrt(Math.Pow((i-MyCenter.X),2)+Math.Pow((j-MyCenter.Y),2)); 
			        //如果像素位于”光晕”之内 
			        if(MyLength