1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
#region variances private string curFileName = null ; private Bitmap curBitmap = null ; private List< string > pathString = new List< string >(); private List<Bitmap> thumbnailImage = new List<Bitmap>(); private List<Bitmap> srcImage = new List<Bitmap>(); private Bitmap temp = null ; private int count = 0; private int number = 0; private int deleteNumber = 0; #endregion #region Functions //Open Function public void OpenImage() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "所有图像文件 | *.bmp; *.pcx; *.png; *.jpg; *.gif;" + "*.tif; *.ico; *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf|" + "位图( *.bmp; *.jpg; *.png;...) | *.bmp; *.pcx; *.png; *.jpg; *.gif; *.tif; *.ico|" + "矢量图( *.wmf; *.eps; *.emf;...) | *.dxf; *.cgm; *.cdr; *.wmf; *.eps; *.emf" ; ofd.ShowHelp = true ; ofd.Title = "打开图像文件" ; if (ofd.ShowDialog() == DialogResult.OK) { curFileName = ofd.FileName; try { curBitmap = (Bitmap)System.Drawing.Image.FromFile(curFileName); pathString.Add(curFileName); srcImage.Add( new Bitmap(curBitmap)); if (curBitmap.Width >= curBitmap.Height) temp = new Bitmap(curBitmap, new Size(100, ( int )(100 * curBitmap.Height / curBitmap.Width))); else temp = new Bitmap(curBitmap, new Size(( int )(100 * curBitmap.Width / curBitmap.Height), 100)); thumbnailImage.Add( new Bitmap(temp)); count++; } catch (Exception exp) { MessageBox.Show(exp.Message); } } DisplayImages(); } //Save Function public void SaveImage() { if (imageBox.Image != null ) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "(*.gif)|*.gif" ; if (sfd.ShowDialog() == DialogResult.OK) { if (File.Exists(sfd.FileName)) { File.Delete(sfd.FileName); imageBox.Image.Save(sfd.FileName); } else imageBox.Image.Save(sfd.FileName); } } else { MessageBox.Show( "Please open an image!" ); } } //Display function private void DisplayImages() { listView1.Clear(); imageList1.Images.Clear(); if (count != 0) { for ( int i = 0; i < count; i++) { imageList1.ColorDepth = ColorDepth.Depth24Bit; imageList1.ImageSize = new Size(thumbnailImage.ElementAt(i).Width, thumbnailImage.ElementAt(i).Height); imageList1.Images.Add((Image)thumbnailImage.ElementAt(i)); listView1.LargeImageList = imageList1; listView1.Items.Add(i.ToString()); listView1.Items[i].ImageIndex = i; } } } #endregion #region Others private void trackBar1_Scroll( object sender, EventArgs e) { label1.Text = "Time interval:" +trackBar1.Value.ToString()+ "ms" ; } private void openToolStripMenuItem_Click( object sender, EventArgs e) { OpenImage(); } private void convertToGifToolStripMenuItem_Click( object sender, EventArgs e) { String outputPath = "C:\\" +number.ToString ()+ ".gif" ; if (File.Exists(outputPath)) { imageBox.Image = null ; number++; outputPath = "C:\\" + number.ToString() + ".gif" ; } AnimatedGifEncoder gif = new AnimatedGifEncoder(); gif.Start(outputPath); gif.SetDelay(trackBar1.Value); gif.SetRepeat(0); for ( int i = 0; i < count; i++) { gif.AddFrame(srcImage.ElementAt(i)); } gif.Finish(); imageBox.Image = (Image)Image.FromFile(outputPath); imageBox.Width = srcImage.ElementAt(0).Width; imageBox.Height = srcImage.ElementAt(0).Height; MessageBox.Show( "Done!" ); } private void saveToolStripMenuItem_Click( object sender, EventArgs e) { SaveImage(); } private void deleteToolStripMenuItem_Click( object sender, EventArgs e) { pathString.RemoveAt(deleteNumber); thumbnailImage.RemoveAt(deleteNumber); srcImage.RemoveAt(deleteNumber); count--; DisplayImages(); } private void listView1_MouseDown( object sender, MouseEventArgs e) { if (listView1.HitTest(e.X, e.Y).Item != null ) { deleteNumber = listView1.HitTest(e.X, e.Y).Item.Index; if (e.Button == MouseButtons.Right) { contextMenuStrip1.Visible = true ; } } } private void blogLinkToolStripMenuItem_Click( object sender, EventArgs e) { System.Diagnostics.Process.Start( "IEXPLORE.EXE" , "http://dongtingyueh.blog.163.com/" ); } #endregion |