程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 用C#制作圖片格式轉化器

用C#制作圖片格式轉化器

編輯:C#入門知識

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)

{

file://創建一個打開對話框對象

OpenFileDialog ofd = new OpenFileDialog();

file://設置對話框的各項屬性

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)

{

file://如果是OK,則建立一個圖象對象

string strFileName = ofd.FileName;

m_bitmap = new Bitmap(strFileName);

file://調整m_pictureBox的大小以適合圖象大小

if(m_bitmap.Width > m_bitmap.Height)

{

file://保持寬度

m_pictureBox.Width = m_width0;

m_pictureBox.Height = (int)((double)m_bitmap.Height*m_width0/m_bitmap.Width);

}

else

{

file://保持高度

m_pictureBox.Height = m_height0;

m_pictureBox.Width = (int)((double)m_bitmap.Width*m_height0/m_bitmap.Height);

}

file://顯示圖片

m_pictureBox.Image = m_bitmap;

file://設置窗體的標題

this.Text = "Image Converter: " + strFileName;

m_btnSaveAs.Enabled = true;

}

}

private void m_btnSaveAs_Click(object sender, System.EventArgs e)

{

file://創建一個保存對話框對象

SaveFileDialog sfd = new SaveFileDialog();

file://設置對話框的各項屬性

sfd.Title = "轉化為";

sfd.OverwritePrompt = true;

sfd.CheckPathExists = true;

sfd.Filter = m_cmbSaveAs.Text + "|" + m_cmbSaveAs.Text;

sfd.ShowHelp = true;

if(sfd.ShowDialog() == DialogResult.OK)

{

file://如果是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#中有許許多多的類以及對象,如果能靈活地運用它們的話,就可以開發出很多功能強大的應用程序。

對以上這個程序,我們還可以擴展其功能,比如我們做個圖片格式批量轉化的工具。這樣的話,我們也不必一個一個地去打開文件,然後進行轉化了,可以將一個目錄中的所有圖片文件轉化為我們需要的文件格式,我想這在網頁制作中圖片格式處理時是非常有用的。有興趣的讀者可以試著去擴展一下這個功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved