86
第十三章 繪圖與多媒體 13.2 繪圖物件 備註:可依進度點選小節 13.5 音效與多媒體播放 13.1 座標和顏色的設定 13.4 圖檔的讀取和儲存 13.3 常用的繪圖方法

第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

第十三章 繪圖與多媒體

13.2 繪圖物件

備註:可依進度點選小節

13.5 音效與多媒體播放

13.1 座標和顏色的設定 13.4 圖檔的讀取和儲存

13.3 常用的繪圖方法

Page 2: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.1 座標和顏色設定座標和顏色設定座標和顏色設定座標和顏色設定

13.1.1 座標座標座標座標

座標系統是以像素座標系統是以像素座標系統是以像素座標系統是以像素((((Pixel))))為單位為單位為單位為單位。。。。

像素是指螢幕上一個點像素是指螢幕上一個點像素是指螢幕上一個點像素是指螢幕上一個點,,,,每個像素都有一個座標點每個像素都有一個座標點每個像素都有一個座標點每個像素都有一個座標點與之對應與之對應與之對應與之對應。。。。

C# 將螢幕左上角的座標設為將螢幕左上角的座標設為將螢幕左上角的座標設為將螢幕左上角的座標設為(0,,,,0),,,,向右為正向右為正向右為正向右為正,,,,向下為正向下為正向下為正向下為正。。。。

Visual C# 2008 除可在表單上繪圖除可在表單上繪圖除可在表單上繪圖除可在表單上繪圖,,,,也可指定也可指定也可指定也可指定控制項當作畫布控制項當作畫布控制項當作畫布控制項當作畫布。。。。

一般以一般以一般以一般以 (x,,,,y) 代表畫布上某個像素的座標點代表畫布上某個像素的座標點代表畫布上某個像素的座標點代表畫布上某個像素的座標點,,,,水平水平水平水平以以以以 x-座標值表示座標值表示座標值表示座標值表示,,,,垂直以垂直以垂直以垂直以 y-座標值表示座標值表示座標值表示座標值表示。。。。

2

Page 3: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

下圖是寬度為下圖是寬度為下圖是寬度為下圖是寬度為 240、、、、高度高度高度高度 160 畫布畫布畫布畫布,,,,畫布上畫布上畫布上畫布上 A(0,0),,,,B(40,0),,,,C(0,40)、、、、D(120,80) 為畫布四個頂點座標點為畫布四個頂點座標點為畫布四個頂點座標點為畫布四個頂點座標點的相對位置的相對位置的相對位置的相對位置。。。。

3

Page 4: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.1.2 顏色設定顏色設定顏色設定顏色設定

在在在在 Visual C# 2008 中對於顏色設定的方法中對於顏色設定的方法中對於顏色設定的方法中對於顏色設定的方法常用的有常用的有常用的有常用的有::::���� FromArgb���� FromKnownColor���� FromHtml���� Color.顏色常值顏色常值顏色常值顏色常值

每種方法都各有其優點每種方法都各有其優點每種方法都各有其優點每種方法都各有其優點。。。。

4

Page 5: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

1. 使用使用使用使用 FromArgb 設定顏色設定顏色設定顏色設定顏色

FromArgb方法共有四個引數方法共有四個引數方法共有四個引數方法共有四個引數,,,,分別代表分別代表分別代表分別代表::::透明度透明度透明度透明度(Alpha))))紅紅紅紅((((Red)、)、)、)、綠綠綠綠((((Green)、)、)、)、藍藍藍藍((((Blue))))顏色光的強度顏色光的強度顏色光的強度顏色光的強度。。。。

每個值分別從每個值分別從每個值分別從每個值分別從 0~255 共分成共分成共分成共分成 256 個強度個強度個強度個強度。。。。

數值越大表示該顏色光越強數值越大表示該顏色光越強數值越大表示該顏色光越強數值越大表示該顏色光越強。。。。

Alpha透明度引數可省略透明度引數可省略透明度引數可省略透明度引數可省略,,,,值為值為值為值為 0代表完全透明代表完全透明代表完全透明代表完全透明,,,,255代表不透明代表不透明代表不透明代表不透明。。。。不同引數值調出各種顏色光不同引數值調出各種顏色光不同引數值調出各種顏色光不同引數值調出各種顏色光。。。。

語法語法語法語法::::

5

Page 6: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

[例例例例] ���� Color.FromArgb (255,255,0,0); // 為紅色不透明為紅色不透明為紅色不透明為紅色不透明

���� Color.FromArgb (126,0,255,0); // 為綠色半透明為綠色半透明為綠色半透明為綠色半透明

���� Color.FromArgb (255,0,0,255); // 為藍色不透明為藍色不透明為藍色不透明為藍色不透明

���� Color.FromArgb (255,255,0,255); // 為紫色不透明為紫色不透明為紫色不透明為紫色不透明(紅紅紅紅+藍藍藍藍)

紅、綠、藍三色光合成圖

6

Page 7: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

2. 使用使用使用使用 FromKnownColor 方法設定顏色方法設定顏色方法設定顏色方法設定顏色

是屬於是屬於是屬於是屬於 Color 結構的方法結構的方法結構的方法結構的方法。。。。從指定預先定義的色彩從指定預先定義的色彩從指定預先定義的色彩從指定預先定義的色彩

來建立來建立來建立來建立 Color 結構結構結構結構。。。。並且由並且由並且由並且由 KnownColor加列舉加列舉加列舉加列舉

常數來表示顏色常數來表示顏色常數來表示顏色常數來表示顏色。。。。

KnownColor 用來指定系統顏色用來指定系統顏色用來指定系統顏色用來指定系統顏色,,,,如如如如::::作用視窗作用視窗作用視窗作用視窗

標題欄的名稱為標題欄的名稱為標題欄的名稱為標題欄的名稱為 ActionCaption、、、、控制項預設顏色控制項預設顏色控制項預設顏色控制項預設顏色

為為為為 Control等等等等。。。。但也可以是顏色列舉常數但也可以是顏色列舉常數但也可以是顏色列舉常數但也可以是顏色列舉常數,,,,如如如如::::Green、、、、

Control等等等等。。。。語法如下語法如下語法如下語法如下::::

Color.FromKnownColor(KnownColor.列舉常數列舉常數列舉常數列舉常數)

[例例例例] 將表單將表單將表單將表單(視窗視窗視窗視窗)標題欄顏色當做標題欄顏色當做標題欄顏色當做標題欄顏色當做(指定給指定給指定給指定給) button1

按鈕的背景色按鈕的背景色按鈕的背景色按鈕的背景色。。。。寫法寫法寫法寫法::::

button1.BackColor=Color.FromKnowColor(KnowsColor.ActionCaption);

7

Page 8: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. 使用顏色列舉常數名稱使用顏色列舉常數名稱使用顏色列舉常數名稱使用顏色列舉常數名稱

在在在在C# 2008中中中中,,,,定義許多常用顏色定義許多常用顏色定義許多常用顏色定義許多常用顏色,,,,直接引用就可以直接引用就可以直接引用就可以直接引用就可以。。。。

撰寫程式時只要在這些顏色名稱前面輸入撰寫程式時只要在這些顏色名稱前面輸入撰寫程式時只要在這些顏色名稱前面輸入撰寫程式時只要在這些顏色名稱前面輸入「「「「Color.」」」」時時時時,,,,

自動出現顏色清單列出所有顏色名稱常值自動出現顏色清單列出所有顏色名稱常值自動出現顏色清單列出所有顏色名稱常值自動出現顏色清單列出所有顏色名稱常值,,,,點選需要點選需要點選需要點選需要

的顏色名稱即可的顏色名稱即可的顏色名稱即可的顏色名稱即可

Color.顏色列舉常數名稱顏色列舉常數名稱顏色列舉常數名稱顏色列舉常數名稱

[例例例例] 將將將將button1按鈕控制項的前景色設為紅色按鈕控制項的前景色設為紅色按鈕控制項的前景色設為紅色按鈕控制項的前景色設為紅色,,,,寫法寫法寫法寫法::::

button1.ForeColor = Color.Red;

8

Page 9: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

利用四個滑動桿控制項利用四個滑動桿控制項利用四個滑動桿控制項利用四個滑動桿控制項,,,,分別來調整色塊的透明度分別來調整色塊的透明度分別來調整色塊的透明度分別來調整色塊的透明度、、、、

紅色紅色紅色紅色、、、、綠色和藍色的色階值綠色和藍色的色階值綠色和藍色的色階值綠色和藍色的色階值,,,,設定值一有改變同時設定值一有改變同時設定值一有改變同時設定值一有改變同時

將四個設定值分別顯示在表單上將四個設定值分別顯示在表單上將四個設定值分別顯示在表單上將四個設定值分別顯示在表單上,,,,且將紅且將紅且將紅且將紅、、、、綠綠綠綠、、、、藍藍藍藍

、、、、透明度混出的色光當作圖片控制項的背景色透明度混出的色光當作圖片控制項的背景色透明度混出的色光當作圖片控制項的背景色透明度混出的色光當作圖片控制項的背景色。。。。

9

Page 10: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step1 設計輸出入介面設計輸出入介面設計輸出入介面設計輸出入介面

10

Page 11: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step2控制項屬性設定控制項屬性設定控制項屬性設定控制項屬性設定

1. tkbA、、、、tkbR、、、、tkbG、、、、tkbB 四個滑動桿控制項的屬性設定四個滑動桿控制項的屬性設定四個滑動桿控制項的屬性設定四個滑動桿控制項的屬性設定::::

���� Maximum 屬性設為屬性設為屬性設為屬性設為 255

���� Minimum 屬性設為屬性設為屬性設為屬性設為 0

���� TickStyle 屬性設為屬性設為屬性設為屬性設為 None

2. picColor 圖片控制項的圖片控制項的圖片控制項的圖片控制項的 BorderStyle 屬性設為屬性設為屬性設為屬性設為 Fixed3D(立體立體立體立體)。。。。

3. 每個滑動桿控制項正下方的每個滑動桿控制項正下方的每個滑動桿控制項正下方的每個滑動桿控制項正下方的0和和和和 255都使用標籤控制項的都使用標籤控制項的都使用標籤控制項的都使用標籤控制項的 Text

屬性來設定屬性來設定屬性來設定屬性來設定,,,,總共需要八個標籤控制項總共需要八個標籤控制項總共需要八個標籤控制項總共需要八個標籤控制項。。。。

4. 使用四個標籤控制項使用四個標籤控制項使用四個標籤控制項使用四個標籤控制項 (lblA、、、、lblR、、、、lblG、、、、lblB)分別顯示各分別顯示各分別顯示各分別顯示各

滑動桿鈕目前的設定值滑動桿鈕目前的設定值滑動桿鈕目前的設定值滑動桿鈕目前的設定值。。。。

5. 使用一個標籤控制項顯示使用一個標籤控制項顯示使用一個標籤控制項顯示使用一個標籤控制項顯示 (A,R,G,B) 的值的值的值的值。。。。

11

Page 12: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step3 撰寫程式碼撰寫程式碼撰寫程式碼撰寫程式碼 FileName : argb.sln01 private void Form1_Load(object sender, EventArgs e)

02 {

03 tkbA.Value = 255;

04 myScroll(sender, e);

05 tkbA.Scroll += new EventHandler(myScroll);

06 tkbR.Scroll += new EventHandler(myScroll);

07 tkbG.Scroll += new EventHandler(myScroll);

08 tkbB.Scroll += new EventHandler(myScroll);

09 }

11 private void myScroll(object sender, EventArgs e)

12 {13 lblA.Text = "透明度透明度透明度透明度 = " + tkbA.Value.ToString ();

14 lblR.Text = "紅色紅色紅色紅色 = " + tkbR.Value.ToString();

15 lblG.Text = "綠色綠色綠色綠色 = " + tkbG.Value.ToString ();

16 lblB.Text = "藍色藍色藍色藍色 = " + tkbB.Value.ToString ();

17 picColor.BackColor = Color.FromArgb(tkbA.Value, tkbR.Value, tkbG.Value, tkbB.Value);

18 lblMsg.Text = " (A,R,G,B)= " + "(" + tkbA.Value.ToString () + "," +

tkbR.Value.ToString () + "," + tkbG.Value.ToString() + "," +

tkbB.Value.ToString () + ")";

19 }12

Page 13: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.2 繪圖物件繪圖物件繪圖物件繪圖物件

13.2.1 Graphics畫布畫布畫布畫布

Graphics是畫布物件是畫布物件是畫布物件是畫布物件,,,,像是繪圖時所使用的像是繪圖時所使用的像是繪圖時所使用的像是繪圖時所使用的畫紙一樣畫紙一樣畫紙一樣畫紙一樣,,,,可讓繪圖方法在其中任意作畫可讓繪圖方法在其中任意作畫可讓繪圖方法在其中任意作畫可讓繪圖方法在其中任意作畫。。。。

將表單將表單將表單將表單、、、、圖片方塊圖片方塊圖片方塊圖片方塊、、、、面板面板面板面板、、、、按鈕按鈕按鈕按鈕…等控制項當作等控制項當作等控制項當作等控制項當作一個畫布一個畫布一個畫布一個畫布,,,,圖形就會顯示在該控制項上圖形就會顯示在該控制項上圖形就會顯示在該控制項上圖形就會顯示在該控制項上。。。。

宣告方式宣告方式宣告方式宣告方式::::

Graphics 畫布物件變數畫布物件變數畫布物件變數畫布物件變數 ;

畫布物件變數畫布物件變數畫布物件變數畫布物件變數 = 物件名稱物件名稱物件名稱物件名稱.CreateGraphics();

13

Page 14: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

[例例例例] 要在要在要在要在 button1 按鈕控制項上面按鈕控制項上面按鈕控制項上面按鈕控制項上面,,,,新增一個名稱新增一個名稱新增一個名稱新增一個名稱為為為為 g 的繪圖物件的繪圖物件的繪圖物件的繪圖物件,,,,寫法寫法寫法寫法::::

Graphics g ;

g = button1.CreateGraphics();

可合併成一行可合併成一行可合併成一行可合併成一行::::

Graphics g = button1.CreateGraphics();

清畫布物件內的圖形清畫布物件內的圖形清畫布物件內的圖形清畫布物件內的圖形,,,,可用可用可用可用 Clear 方法將畫布方法將畫布方法將畫布方法將畫布內容清成指定的顏色內容清成指定的顏色內容清成指定的顏色內容清成指定的顏色,,,,語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.Clear(Color.顏色名稱顏色名稱顏色名稱顏色名稱);

[例例例例] 將畫布將畫布將畫布將畫布g清成白色清成白色清成白色清成白色,,,,即成為白色畫布即成為白色畫布即成為白色畫布即成為白色畫布::::

g.Clear(Color.White);

14

Page 15: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

使用使用使用使用 Clear 方法只清除畫面方法只清除畫面方法只清除畫面方法只清除畫面。。。。

若要將若要將若要將若要將 Graphics畫布物件從記憶體中移除畫布物件從記憶體中移除畫布物件從記憶體中移除畫布物件從記憶體中移除,,,,

要用要用要用要用Dispose方法方法方法方法,,,,語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.Dispose();

[例例例例] 將畫布將畫布將畫布將畫布g由記憶體中移除由記憶體中移除由記憶體中移除由記憶體中移除。。。。

g.Dispose();

15

Page 16: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.2.2 Pen畫筆畫筆畫筆畫筆

Pen 是畫筆物件是畫筆物件是畫筆物件是畫筆物件,,,,像是一支繪圖時所使用的畫筆像是一支繪圖時所使用的畫筆像是一支繪圖時所使用的畫筆像是一支繪圖時所使用的畫筆,,,,可在可在可在可在 Graphics 所建立的所建立的所建立的所建立的畫布物件畫布物件畫布物件畫布物件g 上使用繪圖上使用繪圖上使用繪圖上使用繪圖方法畫出直線或曲線方法畫出直線或曲線方法畫出直線或曲線方法畫出直線或曲線。。。。

建立畫筆物件時建立畫筆物件時建立畫筆物件時建立畫筆物件時,,,,除先定義顏色還要指定畫筆粗細除先定義顏色還要指定畫筆粗細除先定義顏色還要指定畫筆粗細除先定義顏色還要指定畫筆粗細

語法語法語法語法::::

Pen 畫筆物件變數畫筆物件變數畫筆物件變數畫筆物件變數= new Pen(Color.顏色名稱顏色名稱顏色名稱顏色名稱[,粗細粗細粗細粗細]);

[例例例例] 宣告宣告宣告宣告 p 是屬於畫筆物件是屬於畫筆物件是屬於畫筆物件是屬於畫筆物件,,,,建立畫筆的寬度為建立畫筆的寬度為建立畫筆的寬度為建立畫筆的寬度為4 pixels 及畫筆的顏色設為藍色及畫筆的顏色設為藍色及畫筆的顏色設為藍色及畫筆的顏色設為藍色::::

Pen p = new Pen(Color.Blue,4);

16

Page 17: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

建立建立建立建立 Pen 畫筆物件後畫筆物件後畫筆物件後畫筆物件後,,,,若要再度改變畫筆顏色或粗細若要再度改變畫筆顏色或粗細若要再度改變畫筆顏色或粗細若要再度改變畫筆顏色或粗細,,,,可再用下面語法重新設定可再用下面語法重新設定可再用下面語法重新設定可再用下面語法重新設定::::

畫筆物件畫筆物件畫筆物件畫筆物件.Color = Color.顏色名稱顏色名稱顏色名稱顏色名稱;

畫筆物件畫筆物件畫筆物件畫筆物件.Width = 粗細粗細粗細粗細;

[例例例例] 重新設定畫筆重新設定畫筆重新設定畫筆重新設定畫筆p的寬度為的寬度為的寬度為的寬度為6 pixels 及畫筆的顏色及畫筆的顏色及畫筆的顏色及畫筆的顏色為紅色為紅色為紅色為紅色,,,,寫法寫法寫法寫法::::

p.Color = Color.Red ;

p.Width = 6 ;

17

Page 18: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.2.3 Brushes 筆刷筆刷筆刷筆刷

Brushes 是純色的筆刷是純色的筆刷是純色的筆刷是純色的筆刷,,,,用法和用法和用法和用法和 Color 類似類似類似類似

可供繪圖指令指定繪圖的顏色可供繪圖指令指定繪圖的顏色可供繪圖指令指定繪圖的顏色可供繪圖指令指定繪圖的顏色,,,,來填滿一個區域來填滿一個區域來填滿一個區域來填滿一個區域。。。。

宣告方式宣告方式宣告方式宣告方式::::

Brushes.顏色名稱顏色名稱顏色名稱顏色名稱;

18

Page 19: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.2.4 Brush筆刷筆刷筆刷筆刷

Brush筆刷可建立下面所介紹各種樣式的筆刷筆刷可建立下面所介紹各種樣式的筆刷筆刷可建立下面所介紹各種樣式的筆刷筆刷可建立下面所介紹各種樣式的筆刷,,,,

在畫布物件上用繪圖方法畫出一個填滿的區塊在畫布物件上用繪圖方法畫出一個填滿的區塊在畫布物件上用繪圖方法畫出一個填滿的區塊在畫布物件上用繪圖方法畫出一個填滿的區塊

((((如矩形如矩形如矩形如矩形、、、、橢圓橢圓橢圓橢圓、、、、多邊形多邊形多邊形多邊形…)。)。)。)。

有部分物件是包含在有部分物件是包含在有部分物件是包含在有部分物件是包含在 Drawing2D 的命名空間的命名空間的命名空間的命名空間。。。。

例例例例 HatchBrush((((花紋筆刷花紋筆刷花紋筆刷花紋筆刷)。)。)。)。

要先使用下列敘述將要先使用下列敘述將要先使用下列敘述將要先使用下列敘述將 Drawing2D 含入含入含入含入,,,,含入位置含入位置含入位置含入位置

必須寫在程式碼最前面必須寫在程式碼最前面必須寫在程式碼最前面必須寫在程式碼最前面,,,,寫法寫法寫法寫法::::

using System.Drawing.Drawing2D;

19

Page 20: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

1. SolidBrush 筆刷筆刷筆刷筆刷

SolidBrush 筆刷可建立一個純色的筆刷筆刷可建立一個純色的筆刷筆刷可建立一個純色的筆刷筆刷可建立一個純色的筆刷,,,,語法語法語法語法

SolidBrush筆刷物件變數筆刷物件變數筆刷物件變數筆刷物件變數 = new SolidBrush(color.顏色名稱顏色名稱顏色名稱顏色名稱);

[例例例例] 建立建立建立建立sb 為一支暗紅色的筆刷為一支暗紅色的筆刷為一支暗紅色的筆刷為一支暗紅色的筆刷,,,,寫法寫法寫法寫法::::

SolideBrush sb = new SolideBrush(Color.DrakRed);

20

Page 21: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

2. HatchBrush筆刷筆刷筆刷筆刷

可建立一個花紋筆刷可建立一個花紋筆刷可建立一個花紋筆刷可建立一個花紋筆刷,,,,語法語法語法語法::::

HatchBrush筆刷物件變數筆刷物件變數筆刷物件變數筆刷物件變數 =

new HatchBrush(hatchStyle , foreColor , backColor);

[例例例例] 建立建立建立建立 hb 為前景紅色為前景紅色為前景紅色為前景紅色、、、、背景藍色的波浪花紋筆刷背景藍色的波浪花紋筆刷背景藍色的波浪花紋筆刷背景藍色的波浪花紋筆刷,,,,寫法寫法寫法寫法::::

HatchBrush hb =new HatchBrush(HatchStyle.Wave,Color.Red ,Color.Blue);

21

Page 22: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. Rectangle矩形類別矩形類別矩形類別矩形類別

可建立一個矩形物件可建立一個矩形物件可建立一個矩形物件可建立一個矩形物件,,,,供繪圖時使用供繪圖時使用供繪圖時使用供繪圖時使用。。。。

建立時要定義矩形的起點座標和矩形寬度和高度建立時要定義矩形的起點座標和矩形寬度和高度建立時要定義矩形的起點座標和矩形寬度和高度建立時要定義矩形的起點座標和矩形寬度和高度。。。。

語法語法語法語法::::

Rectangle矩形物件變數矩形物件變數矩形物件變數矩形物件變數 = new Rectangle(x,y,width,height);

[例例例例] 要建立要建立要建立要建立r1為左上角座標為左上角座標為左上角座標為左上角座標(30,40),,,,寬度寬度寬度寬度100 和高度和高度和高度和高度

為為為為 60 的矩形的矩形的矩形的矩形,,,,寫法寫法寫法寫法::::

Rectangle r1 = new Rectangle(30,40,100,60);

22

Page 23: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

4. LinearGradientBrush筆刷筆刷筆刷筆刷

可建立一個漸層的筆刷可建立一個漸層的筆刷可建立一個漸層的筆刷可建立一個漸層的筆刷

語法語法語法語法::::

LinearGradienBrush筆刷物件變數筆刷物件變數筆刷物件變數筆刷物件變數 =

new LinearGradientBrush(Rectangle, color1, color2,

angle);

[例例例例] 建立建立建立建立 glb 為由紅色為由紅色為由紅色為由紅色到黃到黃到黃到黃色色色色,,,,方向為水平漸層筆刷方向為水平漸層筆刷方向為水平漸層筆刷方向為水平漸層筆刷,,,,

寫法寫法寫法寫法::::

Rectangle r1 = new Rectangle(10,20,120,80);

LinearGradientBrush glb =

new LinearGradientBrush(r1,Color.Red ,Color. Yellow,90);

23

Page 24: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

5. Bitmap 圖形類別圖形類別圖形類別圖形類別

下面下面下面下面TextureBrush 筆刷建立時筆刷建立時筆刷建立時筆刷建立時,,,,要用要用要用要用到到到到 Bitmap 類別類別類別類別,,,,

Bitmap可建立一個圖形物件可建立一個圖形物件可建立一個圖形物件可建立一個圖形物件,,,,供繪圖使用供繪圖使用供繪圖使用供繪圖使用。。。。

建立時要指定建立時要指定建立時要指定建立時要指定檔檔檔檔名和名和名和名和路徑路徑路徑路徑。。。。圖形圖形圖形圖形檔格檔格檔格檔格式可是式可是式可是式可是BMP, GIF,

JPEG… 等等等等。。。。語法語法語法語法::::

Bitmap 圖形物件變數圖形物件變數圖形物件變數圖形物件變數 = new Bitmap(“filename”);

[例例例例1] Bitmap bmp = new Bitmap(“C:\\vb.bmp“);

[例例例例2] Bitmap bmp = new Bitmap(“..\\vb.jpg“);

24

Page 25: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

6. TextureBrush 筆刷筆刷筆刷筆刷

是一支以圖形物件當作圖是一支以圖形物件當作圖是一支以圖形物件當作圖是一支以圖形物件當作圖案案案案的筆刷的筆刷的筆刷的筆刷,,,,引數中圖形引數中圖形引數中圖形引數中圖形

物件要用物件要用物件要用物件要用 Bitmap 來建立來建立來建立來建立。。。。語法語法語法語法::::

TextureBrush 筆刷物件變數筆刷物件變數筆刷物件變數筆刷物件變數 = new TextureBrush(圖形物件圖形物件圖形物件圖形物件);

[例例例例] 建立建立建立建立 p1 以以以以 ““““vb.bmp” 圖圖圖圖案案案案為筆刷為筆刷為筆刷為筆刷材質材質材質材質,,,,寬度為寬度為寬度為寬度為

40 的畫筆的畫筆的畫筆的畫筆,,,,寫法寫法寫法寫法::::

Bitmap bmp = new Bitmap(“vb.bmp”);

TextureBrush tb = new TextureBrush(bmp);

Pen p1 = new Pen(tb,40);

25

Page 26: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.3 常用的繪圖方法常用的繪圖方法常用的繪圖方法常用的繪圖方法

繪繪繪繪製製製製圖形的圖形的圖形的圖形的步驟步驟步驟步驟::::

����宣告一個畫布物件宣告一個畫布物件宣告一個畫布物件宣告一個畫布物件����將畫布物件指定給一個控制項將畫布物件指定給一個控制項將畫布物件指定給一個控制項將畫布物件指定給一個控制項����在該控制項上面繪在該控制項上面繪在該控制項上面繪在該控制項上面繪製製製製圖形圖形圖形圖形。。。。

若要畫線若要畫線若要畫線若要畫線條條條條建立建立建立建立 Pen 畫筆物件畫筆物件畫筆物件畫筆物件。。。。

要畫填滿區塊建立要畫填滿區塊建立要畫填滿區塊建立要畫填滿區塊建立 Brush筆刷物件筆刷物件筆刷物件筆刷物件。。。。

最後用各種繪圖方法最後用各種繪圖方法最後用各種繪圖方法最後用各種繪圖方法,,,,畫出需要圖形畫出需要圖形畫出需要圖形畫出需要圖形。。。。

26

Page 27: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.3.1 繪製直線繪製直線繪製直線繪製直線

要先宣告一個畫布物件要先宣告一個畫布物件要先宣告一個畫布物件要先宣告一個畫布物件

再將畫布物件指定給一個控制項再將畫布物件指定給一個控制項再將畫布物件指定給一個控制項再將畫布物件指定給一個控制項。。。。

建立建立建立建立 Pen 畫筆物件畫筆物件畫筆物件畫筆物件,,,,指定畫筆的顏色和粗細指定畫筆的顏色和粗細指定畫筆的顏色和粗細指定畫筆的顏色和粗細。。。。

最後用繪圖方法最後用繪圖方法最後用繪圖方法最後用繪圖方法,,,,畫出需要的圖形畫出需要的圖形畫出需要的圖形畫出需要的圖形。。。。

27

Page 28: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

1. DrawLine方法方法方法方法

可用畫筆物件可用畫筆物件可用畫筆物件可用畫筆物件,,,,畫出一畫出一畫出一畫出一條條條條直線直線直線直線。。。。建立時要定義直線建立時要定義直線建立時要定義直線建立時要定義直線

的起點座標和的起點座標和的起點座標和的起點座標和終終終終點座標點座標點座標點座標。。。。

直線顏色和粗細直線顏色和粗細直線顏色和粗細直線顏色和粗細,,,,由畫筆物件來由畫筆物件來由畫筆物件來由畫筆物件來決決決決定定定定。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawLine(畫筆物件畫筆物件畫筆物件畫筆物件, x1, y1, x2, y2);

[例例例例] 在畫布在畫布在畫布在畫布g 上的上的上的上的 (10,10)~(120,120) 兩兩兩兩座標點間繪座標點間繪座標點間繪座標點間繪製製製製

一一一一條條條條直線直線直線直線,,,,畫筆顏色和寬度由畫筆顏色和寬度由畫筆顏色和寬度由畫筆顏色和寬度由 p1 畫筆物件畫筆物件畫筆物件畫筆物件決決決決定定定定,,,,

寫法寫法寫法寫法::::

g.DrawLine(p1,10,10,120,120);

28

Page 29: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

2. DrawRectangle 方法方法方法方法

可用畫筆物件可用畫筆物件可用畫筆物件可用畫筆物件,,,,畫出一個矩形畫出一個矩形畫出一個矩形畫出一個矩形框框框框。。。。

建立時要定義矩形左上角座標和右下角座標建立時要定義矩形左上角座標和右下角座標建立時要定義矩形左上角座標和右下角座標建立時要定義矩形左上角座標和右下角座標。。。。

外框外框外框外框顏色和粗細由畫筆物件顏色和粗細由畫筆物件顏色和粗細由畫筆物件顏色和粗細由畫筆物件決決決決定定定定。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawRectangle(畫筆物件畫筆物件畫筆物件畫筆物件,x1, y1, x2, y2);

[例例例例] 在在在在(10,10) ~ (120,120)間畫一個矩間畫一個矩間畫一個矩間畫一個矩型框型框型框型框,,,,外框外框外框外框顏色顏色顏色顏色和寬度由和寬度由和寬度由和寬度由p1畫筆物件畫筆物件畫筆物件畫筆物件決決決決定定定定,,,,寫法下寫法下寫法下寫法下::::

g.DrawRectangle(p1,10,10,120,120);

29

Page 30: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. DrawPolygon 方法方法方法方法

可用畫筆物件畫出一個可用畫筆物件畫出一個可用畫筆物件畫出一個可用畫筆物件畫出一個封閉封閉封閉封閉的空的空的空的空心心心心多邊形多邊形多邊形多邊形。。。。

建立時除畫筆物件建立時除畫筆物件建立時除畫筆物件建立時除畫筆物件外外外外,,,,還要以還要以還要以還要以 Point 類別指定類別指定類別指定類別指定多邊形的頂點座標多邊形的頂點座標多邊形的頂點座標多邊形的頂點座標。。。。

此此此此方法會方法會方法會方法會依照依照依照依照 Point 類別內點的類別內點的類別內點的類別內點的順序順序順序順序來繪來繪來繪來繪製製製製直線直線直線直線,,,,繪完最後一點繪完最後一點繪完最後一點繪完最後一點,,,,該點會和起點相該點會和起點相該點會和起點相該點會和起點相連連連連成一個成一個成一個成一個封閉封閉封閉封閉的的的的多邊形多邊形多邊形多邊形。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawPolygon(畫筆物件畫筆物件畫筆物件畫筆物件,Point[]);

30

Page 31: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

4. Point 類別類別類別類別用來建立記用來建立記用來建立記用來建立記錄錄錄錄每一點的每一點的每一點的每一點的X、、、、Y座標值座標值座標值座標值,,,,其中可為一個點其中可為一個點其中可為一個點其中可為一個點,,,,也可包含多個點也可包含多個點也可包含多個點也可包含多個點。。。。

語法語法語法語法::::

Point 變數變數變數變數 = new Point(x1, y1);

[例例例例] Point[ ] p1 = new Point(0,0);

Point[ ] 變數變數變數變數= new Point[ ]

{new Point(x1,y1), new Point(x2,y2), new Point (x3,y3),…….};

[例例例例] Point[ ] pts = new Point[ ]

{new Point(0,0), new Point(10,10), new Point(20,20)};

31

Page 32: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

試試試試在表單大在表單大在表單大在表單大小小小小580 x 255(寬寬寬寬x高高高高))))上分別畫出上分別畫出上分別畫出上分別畫出三三三三個圖形個圖形個圖形個圖形,,,,

線線線線條條條條粗細都設為粗細都設為粗細都設為粗細都設為2。。。。

����圖圖圖圖1 第第第第1條條條條線由線由線由線由(5,10)-(140,10),,,,第第第第2條條條條線線線線由由由由(15,30)-

(140, 30),,,,其其其其餘餘餘餘位置以位置以位置以位置以此此此此類類類類推推推推,,,,共有共有共有共有11條條條條線線線線。。。。

����圖圖圖圖2 第第第第1個正方形起點為個正方形起點為個正方形起點為個正方形起點為(160,10)、、、、邊邊邊邊長長長長為為為為200,,,,第第第第2個個個個正方形起點為正方形起點為正方形起點為正方形起點為(150,20)、、、、邊邊邊邊長長長長為為為為180,,,,其其其其餘餘餘餘正方形以正方形以正方形以正方形以此此此此類類類類推推推推,,,,共有共有共有共有10 個正方形個正方形個正方形個正方形。。。。

����圖圖圖圖3 多邊形多邊形多邊形多邊形端端端端點分別在點分別在點分別在點分別在(460,10)、、、、(550,90)、、、、(510,200)、、、、

(410,200)、、、、(370,90)。。。。

32

Page 33: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

FileName : linedemo.sln01 private void Form1_Load(object sender, EventArgs e)

02 {

03 this.Size = new Size(580, 255);

04 }

05 private void Form1_Paint(object sender, PaintEventArgs e)

06 {

07 Graphics g = this.CreateGraphics();

08 Pen p = new Pen(Color.Black, 2);

09 int i;

10 for (i = 1; i <= 11; i++)

11 {

12 g.DrawLine(p, 5 + (i - 1) * 10, 10 + (i - 1) * 20, 140, 10 + (i - 1) * 20);

13 }

14 for (i = 1; i <= 10; i++)

15 {

16 g.DrawRectangle(p, 160 + (i - 1) * 10, 10 + (i - 1) * 10, 200 - (i - 1) * 20, 200 –(i - 1) * 20);

17 }

18 Point[] p_arry = { new Point(460, 10), new Point(550, 90), new Point(510, 200),new Point(410, 200), new Point(370, 90) };

19 g.DrawPolygon(p, p_arry);

20 }33

Page 34: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.3.2 繪製曲線繪製曲線繪製曲線繪製曲線

1. DrawEllipse 方法方法方法方法

可用畫筆物件畫出一個橢圓可用畫筆物件畫出一個橢圓可用畫筆物件畫出一個橢圓可用畫筆物件畫出一個橢圓框框框框。。。。

建立時要定義橢圓形左上角座標建立時要定義橢圓形左上角座標建立時要定義橢圓形左上角座標建立時要定義橢圓形左上角座標、、、、橢圓寬和高度橢圓寬和高度橢圓寬和高度橢圓寬和高度

當當當當寬寬寬寬=高高高高即為正圓即為正圓即為正圓即為正圓。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawEllipse(畫筆物件畫筆物件畫筆物件畫筆物件, x, y, width, height);

畫布物件畫布物件畫布物件畫布物件.DrawEllipse(畫筆物件畫筆物件畫筆物件畫筆物件 , Rectangle);

[例例例例1] g.DrawEllipse(p,0,0,120,80);

[例例例例2] g.DrawEllipse(p,rec1);

34

Page 35: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

2. DrawArc 方法方法方法方法

可用畫筆物件畫出圓弧可用畫筆物件畫出圓弧可用畫筆物件畫出圓弧可用畫筆物件畫出圓弧((((橢圓的一部分橢圓的一部分橢圓的一部分橢圓的一部分)。)。)。)。

建立時要定義橢圓形左上角座標建立時要定義橢圓形左上角座標建立時要定義橢圓形左上角座標建立時要定義橢圓形左上角座標、、、、橢圓寬和高度橢圓寬和高度橢圓寬和高度橢圓寬和高度,,,,圓弧起點角度和畫弧角度圓弧起點角度和畫弧角度圓弧起點角度和畫弧角度圓弧起點角度和畫弧角度。。。。

若畫弧角度為負值若畫弧角度為負值若畫弧角度為負值若畫弧角度為負值,,,,表是逆時針畫圓弧表是逆時針畫圓弧表是逆時針畫圓弧表是逆時針畫圓弧。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawArc(畫筆物件畫筆物件畫筆物件畫筆物件, x, y, width, height, startAngle, sweepAngle);

[例例例例] g.DrawArc(p,0,0,50,30,45,90);

圓弧由圓弧由圓弧由圓弧由45度畫到度畫到度畫到度畫到135度度度度

35

Page 36: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. DrawPie方法方法方法方法

可用畫筆物件畫可用畫筆物件畫可用畫筆物件畫可用畫筆物件畫扇扇扇扇形形形形框框框框。。。。

方法和方法和方法和方法和 DrawArc 方法類似方法類似方法類似方法類似,,,,只多只多只多只多兩條兩條兩條兩條和橢圓中和橢圓中和橢圓中和橢圓中心連心連心連心連線線線線。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawPie(畫筆物件畫筆物件畫筆物件畫筆物件, x, y, width, height, stsrtAngle,sweepAngle);

[例例例例] 圓圓圓圓弧弧弧弧由由由由 45o 逆逆逆逆時時時時針針針針畫畫畫畫到到到到 315o

g.DrawPie(p,0,0,50,30,45,-90)

36

Page 37: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

4. DrawBezier 方法方法方法方法

可用畫筆物件可用畫筆物件可用畫筆物件可用畫筆物件依照依照依照依照四個指定的點座標畫出四個指定的點座標畫出四個指定的點座標畫出四個指定的點座標畫出貝茲貝茲貝茲貝茲曲線曲線曲線曲線。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawBezier(畫筆物件畫筆物件畫筆物件畫筆物件, p1, p2, p3, p4);

5. DrawCurve 方法方法方法方法

可用畫筆物件可用畫筆物件可用畫筆物件可用畫筆物件依照依照依照依照 Point 類別指定的點畫出一類別指定的點畫出一類別指定的點畫出一類別指定的點畫出一條條條條曲線曲線曲線曲線。。。。

DrawBezier 要指定四個點要指定四個點要指定四個點要指定四個點,,,,但但但但 DrawCurve 指定的點數指定的點數指定的點數指定的點數

有有有有彈彈彈彈性性性性。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawCurve(畫筆物件畫筆物件畫筆物件畫筆物件,Point[] );

37

Page 38: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

試試試試分別使用上面分別使用上面分別使用上面分別使用上面五五五五種畫曲線的方法種畫曲線的方法種畫曲線的方法種畫曲線的方法,,,,練習練習練習練習使用使用使用使用 DrawEllipse

畫圓畫圓畫圓畫圓、、、、DrawArc畫圓畫圓畫圓畫圓弧弧弧弧、、、、DrawPie畫畫畫畫扇扇扇扇形圖形圖形圖形圖、、、、DrawBezier

畫畫畫畫貝茲貝茲貝茲貝茲曲線和曲線和曲線和曲線和 DrawCurve 畫曲線畫曲線畫曲線畫曲線。。。。

38

Page 39: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

FileName : drawarc.sln

01 private void Form1_Paint(object sender, PaintEventArgs e)

02 {

03 Graphics g = this.CreateGraphics();

04 Pen p = new Pen(Color.Black, 1);

05 this.Width = 480;

06 this.Height = 200;

07 g.DrawEllipse(p, 20, 20, 100, 80);

08 g.DrawArc(p, 80, 20, 80, 120, 90, -135);

09 g.DrawPie(p, 180, 20, 80, 80, 45, 270);

10 g.DrawBezier(p, new Point(260, 140),new Point(290, 40),

new Point(320, 100), new Point(350, 20));

11 Point[] ps = new Point[] { new Point(360, 140), new Point(390, 40),

new Point(420, 100), new Point(450, 20) };

12 g.DrawCurve(p, ps);

13 }

39

Page 40: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

1. FillRectangle方法方法方法方法

可用筆刷物件在畫布上繪可用筆刷物件在畫布上繪可用筆刷物件在畫布上繪可用筆刷物件在畫布上繪製實心製實心製實心製實心的矩形區塊的矩形區塊的矩形區塊的矩形區塊。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.FillRectangle(筆刷物件筆刷物件筆刷物件筆刷物件, x1, y1, x2, y2);

畫布物件畫布物件畫布物件畫布物件.FillRectangle(筆刷物件筆刷物件筆刷物件筆刷物件, Rectangle);

2. FillPolygon方法方法方法方法

可用筆刷物件在畫布上繪可用筆刷物件在畫布上繪可用筆刷物件在畫布上繪可用筆刷物件在畫布上繪製封閉製封閉製封閉製封閉的的的的實心實心實心實心多邊形區塊多邊形區塊多邊形區塊多邊形區塊。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.FillPolygon(筆刷物件筆刷物件筆刷物件筆刷物件,Point[] ) ;

13.3.3 繪製區塊繪製區塊繪製區塊繪製區塊

40

Page 41: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. FillEllipse 方法方法方法方法

FillEllipse 方法可用筆刷物件方法可用筆刷物件方法可用筆刷物件方法可用筆刷物件,,,,在畫布上繪製一個實心橢圓區塊在畫布上繪製一個實心橢圓區塊在畫布上繪製一個實心橢圓區塊在畫布上繪製一個實心橢圓區塊。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.FillEllipse(筆刷物件筆刷物件筆刷物件筆刷物件, x, y, width, height);

畫布物件畫布物件畫布物件畫布物件.FillEllipse(筆刷物件筆刷物件筆刷物件筆刷物件, Rectangle);

4. FillPie 方法方法方法方法

FillPie 方法可用筆刷物件方法可用筆刷物件方法可用筆刷物件方法可用筆刷物件,,,,在畫布上繪製一個實心扇形區塊在畫布上繪製一個實心扇形區塊在畫布上繪製一個實心扇形區塊在畫布上繪製一個實心扇形區塊。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.FillPie(筆刷物件筆刷物件筆刷物件筆刷物件,x,y,w,h,stsrtAngle,sweepAngle);

畫布物件畫布物件畫布物件畫布物件.FillPie(筆刷物件筆刷物件筆刷物件筆刷物件,Rectangle,stsrtAngle,sweepAngle);

41

Page 42: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

視窗中有視窗中有視窗中有視窗中有「「「「區塊樣式區塊樣式區塊樣式區塊樣式」」」」、、、、「「「「填填填填充充充充樣式樣式樣式樣式」」」」和和和和「「「「顏色顏色顏色顏色」」」」三三三三個個個個

框架框架框架框架,,,,使用使用使用使用者者者者可以自行點選樣式可以自行點選樣式可以自行點選樣式可以自行點選樣式組組組組合合合合,,,,然然然然後按後按後按後按「「「「繪圖繪圖繪圖繪圖」」」」

鈕繪鈕繪鈕繪鈕繪製製製製指定的圖形樣式指定的圖形樣式指定的圖形樣式指定的圖形樣式。。。。

42

Page 43: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step1 建立輸出入介面建立輸出入介面建立輸出入介面建立輸出入介面

43

Page 44: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step2 撰寫程式碼撰寫程式碼撰寫程式碼撰寫程式碼FileName : fill.sln

01 using System.Drawing.Drawing2D;

02

03 namespace fill

04 {

05 public partial class Form1 : Form

06 {

07 public Form1()

08 {

09 InitializeComponent();

10 }

11

12 private void Form1_Load(object sender, EventArgs e)

13 {

14 rdbRectangle.Checked = true;

15 rdbSolid.Checked = true;

16 rdbRed.Checked = true;

17 }

18

44

Page 45: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

19 private void btnDraw_Click(object sender, EventArgs e)

20 {

21 Graphics g = picDraw.CreateGraphics();

22 g.Clear(Color.FromKnownColor(KnownColor.Control));

23 Color c;

24 if (rdbRed.Checked)

25 {

26 c = Color.Red;

27 }

28 else if (rdbBlue.Checked)

29 {

30 c = Color.Blue;

31 }

32 else

33 {

34 c = Color.Green;

35 }

37 Brush b;

38 if (rdbSolid.Checked)

39 {

40 SolidBrush b1 = new SolidBrush(c);

41 b = b1;

42 }45

Page 46: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

43 else if (rdbHatch.Checked)

44 {

45 HatchBrush b2 = new HatchBrush(HatchStyle.Wave, c, Color.White);

46 b = b2;

47 }

48 else if (rdbGradient.Checked)

49 {

50 Rectangle ret = new Rectangle(0, 0, 280, 280);

51 LinearGradientBrush b3 = new LinearGradientBrush

(ret, c, Color.White, 90);

52 b = b3;

53 }

54 else

55 {

56 Bitmap img = new Bitmap("vb.bmp");

57 TextureBrush b4 = new TextureBrush(img);

58 b = b4;

59 }

46

Page 47: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

61 if (rdbRectangle.Checked)

62 {

63 g.FillRectangle(b, 10, 10, 240, 180);

64 }

65 else if (rdbEllipse.Checked)

66 {

67 g.FillEllipse(b, 10, 10, 240, 180);

68 }

69 else if (rdbPie.Checked)

70 {

71 g.FillPie(b, 30, 10, 240, 180, 45, 270);

72 }

73 else

74 {

75 Point[] ps = new Point[] { new Point(130, 10), new Point(30, 200), new Point(240, 70), new Point(10, 70), new Point(220, 200) };

76 g.FillPolygon(b, ps);

77 }

78 }

79 }

80 }

47

Page 48: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.3.4 繪製文字繪製文字繪製文字繪製文字

使用使用使用使用 DrawString 方法前方法前方法前方法前

����先宣告一個畫布物件先宣告一個畫布物件先宣告一個畫布物件先宣告一個畫布物件

����將畫布物件指定給一個控制項將畫布物件指定給一個控制項將畫布物件指定給一個控制項將畫布物件指定給一個控制項。。。。

����建立建立建立建立 Brushes 或或或或 Brush 筆刷物件筆刷物件筆刷物件筆刷物件

����依照需求指定筆刷的種類依照需求指定筆刷的種類依照需求指定筆刷的種類依照需求指定筆刷的種類。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.DrawString(“字串字串字串字串””””, new Font(“字型名稱字型名稱字型名稱字型名稱””””,FontSize) , Brushes, x,

y);

[例例例例1]

g.DrawString(“VB.NET”, new Font(“Arial”,24), Brushes.Black,20,50);

[例例例例2]

HatchBrush b = new HatchBrush(HatchStyle.Wave,c1,c2);

g.DrawString(“關懷關懷關懷關懷””””,new Font(“標楷體標楷體標楷體標楷體””””,48) ,b,20,50); 48

Page 49: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.3.5 其它常用的繪製方法其它常用的繪製方法其它常用的繪製方法其它常用的繪製方法

1. TranslateTransform 方法方法方法方法

設定圖形位移的大小設定圖形位移的大小設定圖形位移的大小設定圖形位移的大小。。。。

畫布物件畫布物件畫布物件畫布物件.TranslateTransform(x, y);

[例例例例] 希望以後繪製的圖形座標希望以後繪製的圖形座標希望以後繪製的圖形座標希望以後繪製的圖形座標,,,,都會向右移都會向右移都會向右移都會向右移15點向下點向下點向下點向下30點點點點::::

g.TranslateTransform(15,30);

2. ScaleTransform方法方法方法方法

設定圖形縮放的比例設定圖形縮放的比例設定圖形縮放的比例設定圖形縮放的比例。。。。引數中要定義寬度和高度的縮放比例引數中要定義寬度和高度的縮放比例引數中要定義寬度和高度的縮放比例引數中要定義寬度和高度的縮放比例。。。。

畫布物件畫布物件畫布物件畫布物件.ScaleTransform(sw, sh);

[例例例例] 希望以後繪製圖形大小希望以後繪製圖形大小希望以後繪製圖形大小希望以後繪製圖形大小,,,,寬度縮小一半寬度縮小一半寬度縮小一半寬度縮小一半,,,,高度放大高度放大高度放大高度放大2倍倍倍倍,,,,寫法寫法寫法寫法::::

g.ScaleTransform(0.5,2);

49

Page 50: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. RotateTransform 方法方法方法方法設定圖形設定圖形設定圖形設定圖形旋轉旋轉旋轉旋轉的角度的角度的角度的角度。。。。引數中角度以引數中角度以引數中角度以引數中角度以 360度度度度為單位為單位為單位為單位((((資資資資料型料型料型料型別為別為別為別為float)。)。)。)。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.RotateTransform(angle);

[例例例例] 希望希望希望希望設定後繪設定後繪設定後繪設定後繪製製製製的圖形都的圖形都的圖形都的圖形都順順順順時時時時針旋轉針旋轉針旋轉針旋轉45度度度度,,,,寫法寫法寫法寫法::::

g.RotateTransform(45);

如如如如執執執執行行行行兩次兩次兩次兩次 RotateTransform 方法方法方法方法,,,,兩次旋轉兩次旋轉兩次旋轉兩次旋轉角度角度角度角度會相加會相加會相加會相加,,,,影響影響影響影響以後繪以後繪以後繪以後繪製製製製圖形圖形圖形圖形。。。。例例例例

g.RotateTransform(45)兩次兩次兩次兩次,,,,以後繪圖的都以後繪圖的都以後繪圖的都以後繪圖的都旋轉旋轉旋轉旋轉90度度度度,,,,也就是也就是也就是也就是說說說說由上由上由上由上次旋轉次旋轉次旋轉次旋轉的角度起再的角度起再的角度起再的角度起再旋轉旋轉旋轉旋轉角度角度角度角度。。。。

50

Page 51: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

4. ResetTransform 方法方法方法方法

TranslateTransform、、、、ScaleTransform、、、、RotateTransform

方法方法方法方法,,,,都以上都以上都以上都以上次執次執次執次執行結行結行結行結果繼續果繼續果繼續果繼續變形變形變形變形

若要還若要還若要還若要還原原原原成成成成原始原始原始原始設定設定設定設定,,,,使用使用使用使用 ResetTransform 方法方法方法方法。。。。

語法語法語法語法::::

畫布物件畫布物件畫布物件畫布物件.ResetTransform();

51

Page 52: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

在視窗下有在視窗下有在視窗下有在視窗下有 、、、、 、、、、 三三三三個個個個核取核取核取核取方塊方塊方塊方塊,,,,核取核取核取核取後後後後

按按按按 鈕就會畫出指定鈕就會畫出指定鈕就會畫出指定鈕就會畫出指定文字文字文字文字樣式樣式樣式樣式。。。。

52

Page 53: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step1 設計輸出入介面設計輸出入介面設計輸出入介面設計輸出入介面

53

Page 54: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step2 撰寫程式碼撰寫程式碼撰寫程式碼撰寫程式碼

FileName : DrawString.sln

01 using System.Drawing.Drawing2D;

02

03 namespace DrawString

04 {

05 public partial class Form1 : Form

06 {

07 public Form1()

08 {

09 InitializeComponent();

10 }

54

Page 55: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

12 private void btnDraw_Click(object sender, EventArgs e)

13 {

14 Graphics g = picDraw.CreateGraphics();

15 g.Clear(Color.FromKnownColor(KnownColor.Control));

16 Rectangle rec = new Rectangle(0, 0, 220, 30);

17 int i;

18 for (i = 1; i <= 10; i++)

19 {

20 LinearGradientBrush b = new LinearGradientBrush

(rec, ColorTranslator.FromHtml ("#00FFFF"), Color.White, 10);

21 g.DrawString("Visual Basic 2008",new Font("Arial Black", 16), b, 0, 0);

22 if (ckbTranslate.Checked) g.TranslateTransform(10, 10);

23 if (ckbScale.Checked) g.ScaleTransform((float)1.1, (float)1.1);

24 if (ckbRotate.Checked) g.RotateTransform(10);

25 }

26 g.ResetTransform();

27 }

55

Page 56: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.4 圖檔的讀取和儲存圖檔的讀取和儲存圖檔的讀取和儲存圖檔的讀取和儲存

1. Bitmap 圖形類別圖形類別圖形類別圖形類別

除除除除13.2 節節節節介紹建立時指定介紹建立時指定介紹建立時指定介紹建立時指定載載載載入圖入圖入圖入圖檔檔檔檔方式方式方式方式,,,,也可指定也可指定也可指定也可指定寬度和高度寬度和高度寬度和高度寬度和高度,,,,會在記憶體會在記憶體會在記憶體會在記憶體保留保留保留保留空間空間空間空間::::Bitmap 圖形物件變數圖形物件變數圖形物件變數圖形物件變數 = new Bitmap(width, height);

[例例例例] Bitmap bmp = new Bitmap(160,120);

2. FromImage 方法方法方法方法

宣告一個畫布物件宣告一個畫布物件宣告一個畫布物件宣告一個畫布物件,,,,其來其來其來其來源源源源為圖形物件為圖形物件為圖形物件為圖形物件。。。。

畫布物件變數畫布物件變數畫布物件變數畫布物件變數 = Graphics.FromImage(Bitmap);

[例例例例] Bitmap bmp = new Bitmap(160,120);

g = Graphics.FromImage(bmp);

56

Page 57: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. Save方法方法方法方法

可將可將可將可將 Bitmap 物件圖形物件圖形物件圖形物件圖形存存存存成成成成檔案檔案檔案檔案,,,,引數除引數除引數除引數除檔檔檔檔名名名名外外外外,,,,要包含要包含要包含要包含路徑路徑路徑路徑。。。。

Bitmap.Save(“FileName”);

[例例例例] bmp.Save(“..\\test.bmp”);

57

Page 58: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

在視窗中有一個白色方塊在視窗中有一個白色方塊在視窗中有一個白色方塊在視窗中有一個白色方塊,,,,使用使用使用使用者者者者可用滑可用滑可用滑可用滑鼠鼠鼠鼠任意畫圖任意畫圖任意畫圖任意畫圖。。。。

畫筆大畫筆大畫筆大畫筆大小小小小和顏色和顏色和顏色和顏色,,,,可以用滑動桿自行調整可以用滑動桿自行調整可以用滑動桿自行調整可以用滑動桿自行調整。。。。

����按按按按 鈕時鈕時鈕時鈕時,,,,方塊清成白色方塊清成白色方塊清成白色方塊清成白色。。。。

����按按按按 鈕時鈕時鈕時鈕時,,,,方塊內圖方塊內圖方塊內圖方塊內圖案案案案以以以以「「「「test1.jpg」」」」存檔存檔存檔存檔。。。。

����按按按按 鈕時鈕時鈕時鈕時,,,,方塊內會顯示方塊內會顯示方塊內會顯示方塊內會顯示原原原原來來來來存檔存檔存檔存檔的的的的。。。。

58

Page 59: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step1 設計輸出入介面設計輸出入介面設計輸出入介面設計輸出入介面

59

Page 60: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step2撰寫程式碼撰寫程式碼撰寫程式碼撰寫程式碼FileName :savedraw.sln

01 Bitmap bmp = new Bitmap(280, 240);

02 int p_w = 1;

03 Color p_c = Color.Black;

04 Pen p = new Pen(Color.Black, 1);

05 int x1, y1;

07 private void Form1_Load(object sender, EventArgs e)

08 {

09 tkbA.Value = 255;

10 tkbA.Scroll += new EventHandler(myScroll);

11 tkbR.Scroll += new EventHandler(myScroll);

12 tkbG.Scroll += new EventHandler(myScroll);

13 tkbB.Scroll += new EventHandler(myScroll);

14 myScroll(sender, e);

15 }

1660

Page 61: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

17 private void myScroll(object sender, EventArgs e)

18 {

19 p_c = Color.FromArgb(tkbA.Value, tkbR.Value, tkbG.Value, tkbB.Value);

20 picColor.BackColor = p_c;

21 p = new Pen(p_c, p_w);

22 }

24 private void tkbPen_Scroll(object sender, EventArgs e)

25 {

26 p_w = tkbPen.Value;

27 p = new Pen(p_c, p_w);

28 lblPen.Text = "畫筆大小畫筆大小畫筆大小畫筆大小:::: " + p_w;

29 }

31 private void picDraw_MouseDown(object sender, MouseEventArgs e)

32 {

33 x1 = e.X;

34 y1 = e.Y;

35 }

61

Page 62: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

37 private void picDraw_MouseMove(object sender, MouseEventArgs e)

38 {

39 Graphics g = Graphics.FromImage(bmp);

40 if (e.Button == MouseButtons.Left)

41 {

42 g.DrawLine(p, x1, y1, e.X, e.Y);

43 picDraw.Image = bmp;

44 x1 = e.X;

45 y1 = e.Y;

46 }

47 g.Dispose();

48 }

49 private void btnClear_Click(object sender, EventArgs e)

50 {

51 Graphics g = Graphics.FromImage(bmp);

52 g.Clear(Color.White);

53 picDraw.Image = bmp;

54 }62

Page 63: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

56 private void btnSave_Click(object sender, EventArgs e)

57 {

58 bmp.Save("test1.jpg");

59 }

60

61 private void btnLoad_Click(object sender, EventArgs e)

62 {

63 Graphics g = Graphics.FromImage(bmp);

64 System.IO.FileStream fs = new System.IO.FileStream("test1.jpg",System.IO.

FileMode.Open);

65 bmp = new Bitmap(fs);

66 fs.Close();

67 picDraw.Image = bmp;

68 }

63

Page 64: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.5 音效與多媒體播放音效與多媒體播放音效與多媒體播放音效與多媒體播放

13.5.1 播放聲音檔播放聲音檔播放聲音檔播放聲音檔

1. Computer 物件物件物件物件

在在在在 VB 2008提提提提供供供供 My.Computer.Audio 物件物件物件物件,,,,可在可在可在可在程式中程式中程式中程式中很很很很容容容容易播放易播放易播放易播放指定的指定的指定的指定的 *.wav 聲音檔聲音檔聲音檔聲音檔。。。。

由於由於由於由於 .NET 中所有類別與物件都可中所有類別與物件都可中所有類別與物件都可中所有類別與物件都可互互互互相相相相呼叫呼叫呼叫呼叫,,,,C# 若要用若要用若要用若要用 VB 2008的的的的 My.Computer.Audio

物件來物件來物件來物件來播放聲音檔播放聲音檔播放聲音檔播放聲音檔

先先先先執執執執行行行行功能功能功能功能表表表表【【【【專案專案專案專案(P)/加入參考加入參考加入參考加入參考(R)】】】】指令指令指令指令,,,,選選選選取取取取「「「「Microsoft.VisualBasic」」」」元元元元件的件的件的件的參考參考參考參考::::

64

Page 65: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

65

Page 66: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

在程式在程式在程式在程式開頭開頭開頭開頭引用引用引用引用Microsoft.VisualBasic 命名空間命名空間命名空間命名空間::::

using Microsoft.VisualBasic;

using Microsoft.VisualBasic.Devices;

接接接接著著著著可用下面語法建立可用下面語法建立可用下面語法建立可用下面語法建立 Computer 物件物件物件物件。。。。透透透透過此過此過此過此物件物件物件物件

可可可可播放音效播放音效播放音效播放音效、、、、處理鍵盤處理鍵盤處理鍵盤處理鍵盤、、、、滑滑滑滑鼠鼠鼠鼠…等等等等資訊資訊資訊資訊。。。。

Computer Computer變數變數變數變數=new Computer();

66

Page 67: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

2. PlaySystemSound 方法方法方法方法

使用使用使用使用Computer 物件的物件的物件的物件的PlaySystemSound 方法方法方法方法,,,,可用可用可用可用

在背景在背景在背景在背景播放播放播放播放一一一一次次次次系統系統系統系統音效音效音效音效。。。。語法語法語法語法::::

Computer變數變數變數變數.Audio.PlaySystemSound(系統音效系統音效系統音效系統音效);

Computer變變變變.Audio.PlaySystemSound(System.Media.SystemSounds.Beep);

SystemSound 提提提提供供供供 Asterisk、、、、Beep、、、、Exclamation、、、、Hand、、、、

Question等等等等5個系統個系統個系統個系統音效音效音效音效。。。。

因因因因 PlaySystemSound 方法是在背景方法是在背景方法是在背景方法是在背景播放播放播放播放系統系統系統系統音效音效音效音效,,,,

程式程式程式程式仍仍仍仍會會會會繼續執繼續執繼續執繼續執行行行行。。。。

67

Page 68: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. Play方法方法方法方法

使用使用使用使用 Computer 物件的物件的物件的物件的 Play方法方法方法方法,,,,除可除可除可除可播放播放播放播放指定的指定的指定的指定的

WAV語語語語音檔外音檔外音檔外音檔外,,,,還可設定還可設定還可設定還可設定播放播放播放播放的的的的模模模模式式式式。。。。語法語法語法語法::::

Computer變數變數變數變數.Audio.Play(“音效檔音效檔音效檔音效檔””””, AudioPlayMode);

[例例例例]Computer變數變數變數變數.Audio.Play (“C:\\good.wav”,AudioPlayMode.Background);

AudioPlayMode播放模播放模播放模播放模式式式式三三三三種形式種形式種形式種形式,,,,視程式需要指定視程式需要指定視程式需要指定視程式需要指定

適適適適當當當當播放模播放模播放模播放模式式式式::::

68

Page 69: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

4. Stop方法方法方法方法

Computer 物件的物件的物件的物件的 Stop 方法方法方法方法,,,,可可可可停止停止停止停止 Play 方法在方法在方法在方法在

背景背景背景背景反覆播放反覆播放反覆播放反覆播放的的的的WAV 語語語語音檔音檔音檔音檔。。。。語法語法語法語法::::

Computer變數變數變數變數.Audio.Stop()

69

Page 70: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

在視窗左邊有一個在視窗左邊有一個在視窗左邊有一個在視窗左邊有一個 鈕鈕鈕鈕,,,,按一下就按一下就按一下就按一下就唸唸唸唸一個一個一個一個英文英文英文英文單單單單字字字字

共有共有共有共有五五五五題題題題,,,,聽聽聽聽完後完後完後完後請請請請選選選選擇答案擇答案擇答案擇答案。。。。若若若若聽聽聽聽不清不清不清不清楚楚楚楚,,,,再按再按再按再按

鈕會重鈕會重鈕會重鈕會重讀讀讀讀一一一一次次次次。。。。答答答答對或對或對或對或答錯答錯答錯答錯時時時時,,,,各會各會各會各會播播播播出一出一出一出一段段段段語語語語音音音音。。。。

70

Page 71: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step2設計輸出入介面設計輸出入介面設計輸出入介面設計輸出入介面

71

Page 72: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step3撰寫程式碼撰寫程式碼撰寫程式碼撰寫程式碼

FileName : playsound.sln

01 using Microsoft.VisualBasic;

02 using Microsoft.VisualBasic.Devices;

03

04 namespace playsound

05 {

06 public partial class Form1 : Form

07 {

08 public Form1()

09 {

10 InitializeComponent();

11 }

12

13 int num = -1;

14 string[] test = { "elephant", "monkey", "cat", "rabbit", "mouse" };

15 bool ans = true; 72

Page 73: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

16 private void Form1_Load(object sender, EventArgs e)

17 {

18 Computer myComputer = new Computer();

19 myComputer.Audio.PlaySystemSound(System.Media.SystemSounds.Beep);

20 lblNews.Text = "按按按按出題出題出題出題鈕開始測驗鈕開始測驗鈕開始測驗鈕開始測驗!!!!";

21 btnCat.Click += new EventHandler(myClick);

22 btnMouse.Click += new EventHandler(myClick);

23 btnMonkey.Click += new EventHandler(myClick);

24 btnElephant.Click += new EventHandler(myClick);

25 btnRabbit.Click += new EventHandler(myClick);

26 }

73

Page 74: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

27 private void btnTest_Click(object sender, EventArgs e)

28 {

29 Computer myComputer = new Computer();

30 if (ans == true)

31 {

32 if (num != 4)

33 {

34 num += 1;

35 }

36 else

37 {

38 num = 0;

39 }

40 myComputer.Audio.Play(test[num]+".wav", AudioPlayMode.WaitToComplete);

41 ans = false;

42 }

43 else

44 {

45 myComputer.Audio.Play(test[num]+".wav",AudioPlayMode. WaitToComplete);

46 }47 lblNews.Text = "第第第第 " + (num + 1) + " 題題題題";

48 }

4974

Page 75: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

50 private void myClick(object sender, EventArgs e)

51 {

52 Computer myComputer = new Computer();

53 Button btn = (Button)sender;

54 if (ans == false)

55 {

56 if (btn.Tag == test[num])

57 {

58 myComputer.Audio.Play("good.wav",AudioPlayMode.WaitToComplete);59 lblNews.Text = "您真內行您真內行您真內行您真內行!!!!!";

60 }

61 else

62 {

63 myComputer.Audio.Play("bad.wav",AudioPlayMode.WaitToComplete);64 lblNews.Text = "請再好好加油請再好好加油請再好好加油請再好好加油!!!!";

65 }

66 ans = true;

67 }

68 else

69 {

70 myComputer.Audio.PlaySystemSound(System.Media.SystemSounds.Asterisk);

71 lblNews.Text = "請先按請先按請先按請先按出題出題出題出題鈕鈕鈕鈕!!!!";

72 }

73 } 75

Page 76: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

74 private void btnExit_Click(object sender, EventArgs e)

75 {

76 Application.Exit();

77 }

78 }

79 }

76

Page 77: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

13.5.2 播放多媒體播放多媒體播放多媒體播放多媒體

在在在在 C# 2008可引用可引用可引用可引用 COM的的的的 Windows Media Player

元元元元件件件件,,,,透透透透過此元過此元過此元過此元件可以件可以件可以件可以製製製製作多作多作多作多媒媒媒媒體體體體播放播放播放播放程式程式程式程式。。。。

引用引用引用引用 Windows Media Player 元元元元件的件的件的件的步驟步驟步驟步驟::::

Step1 新增新增新增新增 Windows Media Player 元元元元件件件件到工具箱到工具箱到工具箱到工具箱。。。。

77

Page 78: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step2 加入加入加入加入「「「「Windows Media Player」」」」元元元元件件件件

78

Page 79: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step3 工具箱工具箱工具箱工具箱新增新增新增新增Windows Media Player將將將將此元此元此元此元件件件件拖曳到拖曳到拖曳到拖曳到表單上填滿整個表單表單上填滿整個表單表單上填滿整個表單表單上填滿整個表單

79

Page 80: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step4 用下面屬性設定用下面屬性設定用下面屬性設定用下面屬性設定 Windows Media Player元元元元件件件件

80

Page 81: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

1. 來來來來源源源源可為可為可為可為檔案檔案檔案檔案名稱或名稱或名稱或名稱或URL(U),,,,用來設定用來設定用來設定用來設定欲播放欲播放欲播放欲播放多多多多媒媒媒媒體體體體的的的的檔案路徑檔案路徑檔案路徑檔案路徑。。。。

2. 選選選選取模取模取模取模式有四種式有四種式有四種式有四種模模模模式式式式::::

畫面說明

81

Page 82: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

3. 播放播放播放播放選項選項選項選項

����自動自動自動自動啟啟啟啟動動動動(O)::::程式程式程式程式執執執執行時自動行時自動行時自動行時自動播放影播放影播放影播放影片片片片。。。。

����適適適適當當當當延伸延伸延伸延伸調整調整調整調整(S)::::播放播放播放播放時自動調整時自動調整時自動調整時自動調整長長長長寬寬寬寬。。。。

����全螢幕全螢幕全螢幕全螢幕播放播放播放播放(F)::::程式程式程式程式執執執執行時程式行時程式行時程式行時程式執執執執行時以行時以行時以行時以全螢幕全螢幕全螢幕全螢幕播放播放播放播放。。。。

����播放次播放次播放次播放次數數數數(N)::::設定設定設定設定播放次播放次播放次播放次數數數數。。。。

4. 音量音量音量音量設定設定設定設定用來調整用來調整用來調整用來調整音量音量音量音量大大大大小小小小、、、、左右左右左右左右聲道聲道聲道聲道以及是以及是以及是以及是否靜音否靜音否靜音否靜音。。。。

82

Page 83: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

製製製製作一個可作一個可作一個可作一個可播放播放播放播放多多多多媒媒媒媒體的應用程式體的應用程式體的應用程式體的應用程式。。。。執執執執行行行行功能功能功能功能表中表中表中表中[檔案檔案檔案檔案/

開啟開啟開啟開啟] 指令指令指令指令,,,,由由由由開啟檔開啟檔開啟檔開啟檔 \chap13\playMovie\bin\debug資料夾資料夾資料夾資料夾

選選選選取取取取動畫動畫動畫動畫檔檔檔檔為為為為fishMove.avi,,,,可可可可播放魚播放魚播放魚播放魚的的的的覓食覓食覓食覓食介紹介紹介紹介紹。。。。功能功能功能功能

表中的選表中的選表中的選表中的選取模取模取模取模式式式式功能功能功能功能有有有有::::None、、、、Mini、、、、Full、、、、Invisible

四種選項四種選項四種選項四種選項。。。。

83

Page 84: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step1 設計輸出入介面設計輸出入介面設計輸出入介面設計輸出入介面

84

Page 85: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

Step2 撰寫程式碼撰寫程式碼撰寫程式碼撰寫程式碼

// FileName : playmovie.sln

01 private void 開啟開啟開啟開啟ToolStripMenuItem_Click(object sender, EventArgs e)

02 {

03 if (openFileDialog1.ShowDialog() == DialogResult.OK)

04 {

05 axWindowsMediaPlayer1.URL = openFileDialog1.FileName;

06 }

07 }

08 private void noneToolStripMenuItem_Click(object sender, EventArgs e)

09 {

10 axWindowsMediaPlayer1.uiMode = "None";

11 }

85

Page 86: 第十三章 繪圖與多媒體 - mslab.csie.asia.edu.twmslab.csie.asia.edu.tw/~jackjow/courses/992...Visual C# 2008 第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體

Visual C# 2008從零開始 第十三章第十三章第十三章第十三章繪圖與多媒體繪圖與多媒體繪圖與多媒體繪圖與多媒體

12 private void miniToolStripMenuItem_Click(object sender, EventArgs e)

13 {

14 axWindowsMediaPlayer1.uiMode = "Mini";

15 }

16 private void fullToolStripMenuItem_Click(object sender, EventArgs e)

17 {

18 axWindowsMediaPlayer1.uiMode = "Full";

19 }

20 private void invisibleToolStripMenuItem_Click(object sender, EventArgs e)

21 {

22 axWindowsMediaPlayer1.uiMode = "Invisible";

23 }

24 private void 結束結束結束結束ToolStripMenuItem_Click(object sender, EventArgs e)

25 {

26 Application.Exit();

27 }

28 }

86