close

()、影像

最常見的影像(image),就是「二進位影像」。凡是副檔名為bmp的影像檔,就是個二進位影像檔。二進位影像在C#中是個類別物件。

 

1.顏色物件:

(1) 建立一個顏色物件:

(1-1) Color 變數名稱 = Color.FromArgb(int R,int G,int B);

其中,RGB0~255的整數,表示該顏色的R值、G值、B值。A值預設為255

(1-2) Color 變數名稱 = Color.FromArgb(int A,int R,int G,int B);

其中,ARGB0~255的整數,表示該顏色的A值、R值、G值、B值。

(2) 顏色物件的成員:

顏色.A:該顏色的A(又稱alpha值,或「不透明度」),為0~255的整數。數字越高越不透明,越低越透明。

顏色.R:該顏色的R值,為0~255的整數。

顏色.G:該顏色的G值,為0~255的整數。

顏色.B:該顏色的B值,為0~255的整數。

2.位元圖片:

(1) 位元圖片物件的建構式:

(1-1) Bitmap 變數名稱=new Bitmap(int X,int Y);   

其中,XY都是正整數。表示建立一個空白的位元圖片(即其每一個像素的ARGB值都是0)。其寬度是X個像素,高度是Y個像素。例如:

Bitmap p1=new Bitmap(100,100);

(1-2) Bitmap 變數名稱=new Bitmap(string 路徑);

路徑中讀取位元圖片。

(1-3) Bitmap 變數名稱=new Bitmap(Image 影像);   

表示將該影像給存入此位元圖片。那麼,位元圖片的每一個像素的ARGB值、以及寬度和高度,都和該影像是一樣的。例如:

Image A=Image.FromFile("D:/User-Data/Desktop/f1.jpg");

Bitmap p1=new Bitmap(A);

(2) 位元圖片的寬與高:

位元圖片.Width為該圖片的寬,位元圖片.Height為該圖片的高。

(3) 取得位元圖片中,某一個像素點的顏色:

位元圖片.GetPixel(int X,int Y);

可以回傳一個顏色物件,該顏色是此位元圖片中,x座標為Xy座標為Y的像素之顏色。

註:位元圖片的像素座標,是從0開始數起。也就是說,一張寬100、高100的位元圖片,像素的XY座標都是從0~99

(4) 設定位元圖片中,某一個像素點的顏色:

位元圖片.SetPixel(int X, int Y, Color C);

在此位元圖片中,設定x座標為Xy座標為Y的像素其顏色為C

(5) 顯示圖片於picturebox上:

pictureBox1.Image = 位元圖片名稱;

範例如:

Bitmap B = new Bitmap(100, 100);

for (int i = 0; i < B.Width; i++)

{

for (int j = 0; j < B.Height; j++)

{ B.SetPixel(i, j, Color.FromArgb(i, j, 0)); }

}

pictureBox1.Image = B;

執行後顯示:

image

(6) 將此位元圖片存檔:

位元圖片.Save(檔案路徑, 檔案編碼格式);

其中,檔案路徑的資料形態是字串。檔案編碼格式則是個System.Drawing.Imaging.ImageFormat類別物件,這個物件可以決定圖檔要用哪種編碼格式來存檔。此物件常用的寫法如下:

System.Drawing.Imaging.ImageFormat.Bmp  //表示用Bmp檔的編碼方式存檔

System.Drawing.Imaging.ImageFormat.Jpeg  //表示用Jpeg檔的編碼方式存檔

System.Drawing.Imaging.ImageFormat.Gif  //表示用Gif檔的編碼方式存檔(Gif檔可顯示透明度、動態圖檔)

System.Drawing.Imaging.ImageFormat.Png  //表示用Png檔的編碼方式存檔(Png檔可顯示透明度)

System.Drawing.Imaging.ImageFormat.Icon  //表示將檔案存成一個windows Icon檔案,也就是桌面圖示的檔案

註一:若檔案編碼格式不寫,則預設Png檔的編碼方式存檔。

註二:檔案編碼格式乃是檔案的本質,不因檔案路徑中副檔名而改變。也就是說,若今有一個圖檔,其檔案編碼格式System.Drawing.Imaging.ImageFormat.Png,但檔案路徑"xxx.bmp ",則其仍然是個Png檔,只不過檔名是xxx.bmp。如此一來造成此檔案「名不符實」,會產生使用上的誤解,故要小心!

 

 

上一篇:檔案內容的讀寫(streamreader、streamwriter、files)

下一篇:stopwatch計時器

按此前往C#完整教學目錄

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(0) 人氣()