吉吉于

C#每天抄一点(23):图像翻转和拓展效果

Graphics.DrawImage 方法 (Image, Rectangle, Rectangle, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。
public void DrawImage(
Image image,
Rectangle destRect,
Rectangle srcRect,
GraphicsUnit srcUnit
)

image
类型:System.Drawing.Image
要绘制的 Image。
destRect
类型:System.Drawing.Rectangle
Rectangle 结构,它指定所绘制图像的位置和大小。 将图像进行缩放以适合该矩形。
srcRect
类型:System.Drawing.Rectangle
Rectangle 结构,它指定 image 对象中要绘制的部分。
srcUnit
类型:System.Drawing.GraphicsUnit
GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。

01 /*
02 * 由SharpDevelop创建。
03 * 用户: Lazynight
04 * 日期: 2011/10/23
05 * 时间: 17:30
06 *
07 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
08 */
09 using System;
10 using System.Collections.Generic;
11 using System.Drawing;
12 using System.Windows.Forms;
13
14 namespace Lazy23_图像翻转和拓展效果
15 {
16     public partial class MainForm : Form
17     {
18         Bitmap Night_bitmap;
19         public MainForm()
20         {
21             InitializeComponent();
22
23         }
24
25         void Button1Click(object sender, EventArgs e)
26         {
27             openFileDialog1.Filter=“*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf”;
28             //设置打开图像的类型
29             this.openFileDialog1.ShowDialog();//打开对话框
30             if(this.openFileDialog1.FileName.Trim()==“”)
31                 return;
32             try
33             {
34                 // 把打开的图像赋给Bitmap变量
35                 Bitmap Lazy_src=new Bitmap(this.openFileDialog1.FileName);
36                 Night_bitmap=new Bitmap(Lazy_src,this.pictureBox1.Width,this.pictureBox1.Height);
37                 this.pictureBox1.Image=Night_bitmap;
38                 //显示图像   
39             }
40             catch(Exception Err)
41             {
42                 // 提示对话框
43                 MessageBox.Show(this,“打开图像文件错误~~”,“提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
44             }
45         }
46
47         void Button2Click(object sender, EventArgs e)
48         {
49             int Lazy_ph=this.pictureBox1.Height;//图像高度
50             int Lazy_pw=this.pictureBox1.Width;//图像宽度
51             Graphics Lazy_pic =this.pictureBox1.CreateGraphics();
52             //创建Graphics对象实例
53             Lazy_pic.Clear(Color.Black);//初始为黑色
54             for(int y=-Lazy_ph/2;y<=Lazy_ph/2;y++)
55             {
56                 Rectangle DestRect=new Rectangle(,Lazy_ph/2-y,Lazy_pw,2*y);
57                 Rectangle SrcRect=new Rectangle(,,Night_bitmap.Width,Night_bitmap.Height);
58                 Lazy_pic.DrawImage(Night_bitmap,DestRect,SrcRect,GraphicsUnit.Pixel);
59                 System.Threading.Thread.Sleep(10);
60             }
61         }
62
63         void Button3Click(object sender, EventArgs e)
64         {
65             int Lazy_pw=this.pictureBox1.Width;//图像宽度
66             int Lazy_ph=this.pictureBox1.Height;//图形高度
67             Graphics Lazy_pic=this.pictureBox1.CreateGraphics();
68             //创建Graphics对象实例
69             Lazy_pic.Clear(Color.Black);//初始化黑色
70             for(int x=;x<=Lazy_pw/2;x++)
71             {
72                 Rectangle DestRect=new Rectangle(Lazy_pw/2-x,Lazy_ph/2-x,2*x,2*x);
73                 //此为目的图像区域。左顶点坐标随循环逐渐改变(Lazy_pw/2-x,Lazy_ph/2-x),矩形的宽高为2*x。
74                 Rectangle SrcRect=new Rectangle(,,Night_bitmap.Width,Night_bitmap.Height);
75                 //此为要绘制的图像区域
76                 Lazy_pic.DrawImage(Night_bitmap,DestRect,SrcRect,GraphicsUnit.Pixel);
77                 //绘图
78                 System.Threading.Thread.Sleep(10);
79                 //利用线程睡眠时间控制速度。
80
81             }
82         }
83     }
84 }

下载源码

转载请注明:于哲的博客 » C#每天抄一点(23):图像翻转和拓展效果