快讯

用C#制作图片格式转化器

2004-02-14 09:34  出处:eNet硅谷动力  作者:王凯明  责任编辑:pjl 

Visual C#是微软公司推出的下一代程序开发语言,是微软.Net 框架中的的一个重要组成部分,在推出Visual C#的过程中,微软公司还推出了与之相对应的一个软件开发包--.Net FrameWork SDK。此软件开发包里面封装了许多类、对象。Visual C#就是通过调用这些类、对象来实现许多比较强大的功能。 -.概述: 正由于C#调用了许多功能强大的类和对象,所以用C#和.Net Framework实现各种不同图象格式之间的转化是非常方便,而用Windows API的话,由于没有直接的函数支持,工作量将会非常大。在C#下,你只要运用ImageFormat类(在System.Drawing.Imaging 名字空间下),就可以实现以下常见图象格式之间的转化了。 BMP - 扩展名.bmp GIF - 扩展名.gif Icon - 扩展名.ico JPEG - 扩展名.jpg, .jpeg PNG - 扩展名.png TIFF - 扩展名.tif WMF - 扩展名 .wmf 二.程序设计和运行的环境: (1)微软公司视窗2000服务器版 (2).Net FrameWrok SDK Beta 2版 三.具体步骤: (1).在Visual Studio下新建一个C#的工程,不妨命名为Image Converter。图示如下: (2).现在我们来设计程序的主界面: 先将窗体的Text属性设置为Image Converter。 再往窗体上添加两个Button控件、两个ComboBox控件以及一个PictureBox: 将两个Button控件的Name属性分别置为m_btnOpen和m_btnSaveAs,Text属性分别置为“打开”和“转化为”(不妨将它们的FlatStyle属性都置为Flat,因为现在流行Flat啊!)。 将两个ComboBox控件的Name属性分别置为m_cmbOpen和m_cmbSaveAs,将它们的Text属性都设置为*.bmp,同时在它们的Items属性中的字符串集合编辑器里均加入*.bmp*.jpg*.gif*.tif(每行一个)。 最后我们将PictureBox控件的Name属性设置为m_pictureBox,同时为了外观明显我们将它的BorderStyle属性改为FixedSingle。 好了,到此为止我们以及做好了所有的界面工作了。图示如下: (3).接下来我们就编写代码部分(窗体右键的“查看代码”就可以打开代码文件): 首先我们在代码文件的开始处添加using System.Drawing.Imaging;因为该程序用到了ImageFormat类,而这个类是在System.Drawing.Imaging名字空间下的,所以必须添加这一句。 接着,给我们的类添加三个私有的数据成员:private Bitmap m_bitmap;private int m_width0;private int m_height0;在构造函数中初始化这三个数据成员,代码如下: public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // m_bitmap = null; m_width0 = m_pictureBox.Size.Width; m_height0 = m_pictureBox.Size.Height; } 最后,给“打开”和“转化为”两个按钮添加Click事件,生成两个消息相应函数,代码以及注释如下: private void m_btnOpen_Click(object sender, System.EventArgs e) { //创建一个打开对话框对象 OpenFileDialog ofd = new OpenFileDialog(); //设置对话框的各项属性 ofd.Filter = m_cmbOpen.Text + "|" + m_cmbOpen.Text; string filter = ofd.Filter; ofd.InitialDirectory = System.Environment.CurrentDirectory; ofd.Title = "打开图象文件"; ofd.ShowHelp = true; if(ofd.ShowDialog() == DialogResult.OK) { //如果是OK,则建立一个图象对象 string strFileName = ofd.FileName; m_bitmap = new Bitmap(strFileName); //调整m_pictureBox的大小以适合图象大小 if(m_bitmap.Width > m_bitmap.Height) { //保持宽度 m_pictureBox.Width = m_width0; m_pictureBox.Height = (int)((double)m_bitmap.Height*m_width0/m_bitmap.Width); } else { //保持高度 m_pictureBox.Height = m_height0; m_pictureBox.Width = (int)((double)m_bitmap.Width*m_height0/m_bitmap.Height); } //显示图片 m_pictureBox.Image = m_bitmap; //设置窗体的标题 this.Text = "Image Converter: " + strFileName; m_btnSaveAs.Enabled = true; } } private void m_btnSaveAs_Click(object sender, System.EventArgs e) { //创建一个保存对话框对象 SaveFileDialog sfd = new SaveFileDialog(); //设置对话框的各项属性 sfd.Title = "转化为"; sfd.OverwritePrompt = true; sfd.CheckPathExists = true; sfd.Filter = m_cmbSaveAs.Text + "|" + m_cmbSaveAs.Text; sfd.ShowHelp = true; if(sfd.ShowDialog() == DialogResult.OK) { //如果是OK,则根据不同的选项保存为相应格式的文件 string strFileName = sfd.FileName; switch(m_cmbSaveAs.Text) { case "*.bmp": // 在这里用ImageFormat类 m_bitmap.Save(strFileName, ImageFormat.Bmp); break; case "*.jpg": // 在这里用ImageFormat类 m_bitmap.Save(strFileName, ImageFormat.Jpeg); break; case "*.gif": // 在这里用ImageFormat类 m_bitmap.Save(strFileName, ImageFormat.Gif); break; case "*.tif": // 在这里用ImageFormat类 m_bitmap.Save(strFileName, ImageFormat.Tiff); break; } this.Text = "Image Converter: " + strFileName; } } (4).OK啦,现在按Ctrl+F5试一下效果吧。图示如下: 四.总结: 以上,我们用C#很快做了个图片格式转化器,从中我们可以看到C#中类的强大功能。而且C#中有许许多多的类以及对象,如果能灵活地运用它们的话,就可以开发出很多功能强大的应用程序。 对以上这个程序,我们还可以扩展其功能,比如我们做个图片格式批量转化的工具。这样的话,我们也不必一个一个地去打开文件,然后进行转化了,可以将一个目录中的所有图片文件转化为我们需要的文件格式,我想这在网页制作中图片格式处理时是非常有用的。有兴趣的读者可以试着去扩展一下这个功能。
IT热词搜索 来源:360新闻
软件论坛帖子排行
相关文章

相关软件:

腾讯QQ2012
大小:52.93 MB 授权:免费
腾讯QQ2012
立即下载
腾讯QQ2013
大小:49.32 MB 授权:免费
腾讯QQ2013
立即下载