吉吉于

C#每天抄一点(22):图像百叶窗效果

 

 

001 /*
002 * 由SharpDevelop创建。
003 * 用户: Lazynight
004 * 日期: 2011/10/23
005 * 时间: 10:42
006 *
007 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
008 */
009 using System;
010 using System.Collections.Generic;
011 using System.Drawing;
012 using System.Windows.Forms;
013
014 namespace Lazy22_图像百叶窗效果
015 {
016     public partial class MainForm : Form
017     {
018         Bitmap Night_bitmap;
019         public MainForm()
020         {
021             InitializeComponent();
022
023         }
024
025         void Button1Click(object sender, EventArgs e)
026         {
027             openFileDialog1.Filter=“*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf”;
028             // 设置打开图像的类型
029             this.openFileDialog1.ShowDialog();//显示对话框
030             if(this.openFileDialog1.FileName.Trim()==“”)
031             return;
032             try
033             {    //把打开的图像赋给Bitmap变量
034                 Bitmap Lazy_bitmap=new Bitmap(this.openFileDialog1.FileName);
035                 Night_bitmap=new Bitmap(Lazy_bitmap,this.pictureBox1.Width,this.pictureBox1.Height);
036                 this.pictureBox1.Image=Night_bitmap;//显示图像
037             }
038             catch
039             {
040                 //提示
041                 MessageBox.Show(this,“打开图像文件错误~”,“提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
042             }
043         }
044
045         void Button2Click(object sender, EventArgs e)
046         {
047             Night_bitmap=(Bitmap)this.pictureBox1.Image.Clone();
048             int Lazy_ph=Night_bitmap.Height/20;//将图像高度均分为20分
049             int Lazy_pw=Night_bitmap.Width;//宽度不分
050             Graphics Lazy_pic=this.pictureBox1.CreateGraphics();//定义Graphics对象实例
051             Lazy_pic.Clear(Color.Black);//初始化黑色
052             Point[] Lazy_point=new Point[20];//定义点数组
053             for(int y=;y<20;y++)
054             {
055                 Lazy_point[y].X=;
056                 Lazy_point[y].Y=Lazy_ph*y;
057                 //此为20个小矩形的左顶点
058             }
059             Bitmap Day_bitmap=new Bitmap(Night_bitmap.Width,Night_bitmap.Height);
060             for(int i=;i<Lazy_ph;i++)
061             {
062                 for(int y=;y<20;y++)
063                 {
064                     for(int k=;k<Lazy_pw;k++)
065                     {
066                         Day_bitmap.SetPixel(Lazy_point[y].X+k,Lazy_point[y].Y+i,Night_bitmap.GetPixel(Lazy_point[y].X+k,Lazy_point[y].Y+i));
067                         //每一行自左向右填充每个点的像素,重复图形宽度大小的次数
068                     }
069                 }
070             this.pictureBox1.Refresh();//刷新图像
071             this.pictureBox1.Image=Day_bitmap;
072             System.Threading.Thread.Sleep(100);
073             }
074         }
075
076         void Button3Click(object sender, EventArgs e)
077         {
078             Night_bitmap=(Bitmap)this.pictureBox1.Image.Clone();
079             int Lazy_ph=Night_bitmap.Height;//高度不分
080             int Lazy_pw=Night_bitmap.Width/30;//将图像宽度均分为30分
081             Graphics Lazy_pic=this.pictureBox1.CreateGraphics();//定义Graphics对象实例
082             Lazy_pic.Clear(Color.Black);//初始化黑色
083             Point[] Lazy_point=new Point[30];//定义点数组
084             for(int x=;x<30;x++)
085             {
086                 Lazy_point[x].Y=;
087                 Lazy_point[x].X=Lazy_pw*x;
088                 //此为30个小矩形的左顶点
089             }
090             Bitmap Day_bitmap=new Bitmap(Night_bitmap.Width,Night_bitmap.Height);
091             for(int i=;i<Lazy_pw;i++)
092             {
093                 for(int x=;x<30;x++)
094                 {
095                     for(int k=;k<Lazy_ph;k++)
096                     {
097                         Day_bitmap.SetPixel(Lazy_point[x].X+i,Lazy_point[x].Y+k,Night_bitmap.GetPixel(Lazy_point[x].X+i,Lazy_point[x].Y+k));
098                         //每一行自上向下填充每个点的像素,重复图形高度大小的次数
099                     }
100                 }
101             this.pictureBox1.Refresh();//刷新图像
102             this.pictureBox1.Image=Day_bitmap;
103             System.Threading.Thread.Sleep(100);
104             }
105         }
106     }
107 }

下载源码

转载请注明:于哲的博客 » C#每天抄一点(22):图像百叶窗效果