c#写的GIF制作工具

时间:2012-11-11 15:30 来源:未知 作者:云南新华电脑学院 点击:
今天,自己做了一个GIF图像生成器,可以实现任意张图像生成GIF,很好用,给大家分享一下,资料搜集来自网络!!! 下面是界面图像和效果实例图: 界面图: 实例图: 接着是源码下载地址: http://download.csdn.net/detail/trent1985/4745698 部分源代码如下: C# code 1
今天,自己做了一个GIF图像生成器,可以实现任意张图像生成GIF,很好用,给大家分享一下,资料搜集来自网络!!!
下面是界面图像和效果实例图: 
界面图:

实例图:

接着是源码下载地址: 
http://download.csdn.net/detail/trent1985/4745698
部分源代码如下:
C# code
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

分享到:
云南新华电脑学校专业职业规划师为你提供更多帮助

相关文章

发表评论
评价:
验证码: 点击我更换图片
咨询中心
咨询电话:0871-68211888,QQ:800068988

在线咨询 预约报名
新华云课堂
电话咨询 顶部