用VS.NET在行动装置上绘图(繁体)

2010-08-28 10:49:44来源:西部e网作者:

摘要

雖然開發行動裝置應用程式有很多工具可以選擇,包括 eMbedded Visual C++ 4.0、Visual Studio .NET 2003、或是 Microsoft 即將於今年推出的 Visual Studio 2005,您也可以使用其他廠商提供的行動裝置應用程式開發工具,或是像 OpenNETCF.org 提供的類別庫 (Open Source) 進行開發。不論使用那一種工具開發 Pocket PC 或是 Smartphone 應用程式,都可以歸類成 Managed 應用程式開發和 Native 應用程式開發兩種,這兩種不同的應用程式開發方式各有不同的適用場合,要開發行動裝置應用程式的人首先面臨的問題就是選擇一個合適的應用程式開發工具。

Managed 應用程式開發和 Native 應用程式開發

選擇 eMbedded Visual C++ 4.0 或是 Visual Studio 2005 但是選擇使用 C/C++ 語言開發行動裝置應用程式屬於 Native 應用程式開發,選擇 Visual Studio .NET 2003 或是 Visual Studio 2005 但是選擇使用 C# 或 Visual Basic 語言開發行動裝置應用程式屬於 Managed 應用程式開發,這兩種不同型態的應用程式開發的特性和適用場合詳見表1的說明:

選擇 eMbedded Visual C++ 4.0 或是 Visual Studio 2005 但是選擇使用 C/C++ 語言開發行動裝置應用程式屬於 Native 應用程式開發,選擇 Visual Studio .NET 2003 或是 Visual Studio 2005 但是選擇使用 C# 或 Visual Basic 語言開發行動裝置應用程式屬於 Managed 應用程式開發,這兩種不同型態的應用程式開發的特性和適用場合詳見表 1 的說明:

表 1:Managed 應用程式開發和 Native 應用程式開發的特性與適用場合

Managed 應用程式開發 Native 應用程式開發
優點: 優點:
  1. 開發好的應用程式可以在具有 Microsoft .NET 平台的行動裝置上執行
  2. 學習曲線短
  3. 類別庫功能豐富
  4. 通訊功能支援完整
  1. 開發好的應用程式執行效率佳
  2. 開發好的應用程式體積小
  3. 可以發揮裝置最大的功能(是裝置的"系統"語言)
  4. 適合進行 COM 程式設計
  5. 適合進行非 Microsoft Windows CE平 台的行動裝置應用程式開發
  6. 適合開發裝置驅動程式
  7. 適合開發 plug-ins 和 shell extension 之類的應用程式
  8. 可以開發所有的 Windows CE 裝置平台的應用程式
缺點: 缺點:
  1. 不適合即時 (real time) 應用程式設計
  2. .NET 平台並未包裝行動裝置提供的所有功能
  3. 只能開發 Pocket PC 和更新的行動裝置的應用程式
  1. 記憶體處理不當容易發生記憶體漏洞 (Memory leak)
  2. 學習曲線長
特性: 特性:
  1. 使用語言:C# 和 Visual Basic
  2. 編譯成 Microsoft 中間碼 (MSIL)
  1. 使用語言 C/C++
  2.  編譯成指定 CPU 的二進位碼

雖然使用 Visual Studio .NET 2003 或是 Visual Studio 2005 搭配 C# 或 Visual Basic 開發應用程式無法發揮許多新問世的行動裝置的最大功能,但是我們還是可以利用 eMbedded Visual C++ 4.0 或是 Visual Studio 2005 但是搭配 C/C++ 開發好需要的功能並製作動態連結函數供 Managed 應用程式呼叫使用,兩者可以相輔相成,符合 Microsoft 把 C/C++ 當做系統語言的用意。

Windows Mobile 行動裝置平台

Microsoft Windows Mobile 行動裝置平台提給應用行動裝置應用程式開發人員極為豐富的功能,包括執行裝置管理功能的 Remote API、Configuration、Terminal Service Client、和安全管制的功能,執行通訊功能的 TAPI(Telephony API)、SMS(Short Message Service)、MAPI(Messaging API)、POOM(Pocket Outlook Object Model)、Socket、紅外線、藍芽、和 ActiveSync 序列連線,負責使用者介面功能的首頁、Shell、和 HTML 控制項,執行存取資料庫功能的 ADOCE、XML、CE 資料庫、SQL Server CE、和 OLE DB,以及多媒體和遊戲相關的GAPI、DirectX 功能等等,足以支援從商務應用到娛樂導向的各種應用程式的開發,行動裝置應用程式開發工程師可以利用 eMbedded Visual C++ 4.0 或 Visual Studio .NET 2003 搭配 Microsoft Windows Mobile 行動裝置平台提供的各種應用程式開發介面進行應用程式開發,但是要使用 eMbedded Visual C++ 4.0 開發 Pocket PC 平台或是 Smartphone 平台的應用程式,您必須安裝好 eMbedded Visual C++ 4.0,再安裝 Pocket PC 2002、 Pocket PC 2003、或是 Smartphone 相關的 SDK。要使用 Visual Studio .NET 2003 開發 Pocket PC 2003 或是 Smartphone 平台的應用程式之前必須先安裝 Pocket PC 2003、或是 Smartphone 相關的 SDK,才能開發指定平台的行動裝置應用程式。

Microsoft Windows Mobile 行動裝置平台提供的各種應用程式開發支援詳見圖 1 的說明:
\
圖 1:Microsoft Windows Mobile 行動裝置平台提供的各種應用程式開發支援

了解了 Windows Mobile 行動裝置平台提供的各種功能之後,接下來我們就要開發第一個行動裝置應用程式。

在行動裝置上繪圖
要在 Microsoft 的行動裝置上執行繪圖的動作有以下幾種選擇:

  1. 使用 .NET Compact Framework 提供的 GDI+,即 System.Drawing 名稱空間所提供的功能。
    .NET Compact Framework 提供的 GDI+ 功能比桌上型電腦可以使用的 .NET Framework的GDI+ 少很多功能,以 Bitmap 類別的功能為例,Clone 方法、MakeTransparent 方法、和 Save 方法都無法使用,而且也不能呼叫繼承自 Image 類別的 RotateFlip 方法,造成無法複製圖形的某一個部分,製作圖形透空的效果,將圖形存成檔案,或是旋轉 / 翻轉圖形,因此單單利用 .NET Compact Framework 提供的 GDI+ 功能會很難開發出提供基本圖形操作功能的應用程式。

  2. 呼叫 Windows CE平 台提供的 GDI 功能。
    .NET Compact Framework 提供的 GDI+ 有些可以利用 Windows 平台本身提供的 GDI 功能來完成,Windows 平台提供的 GDI 功能是以 C 函數的格式存在,使用 eMbedded Visual C++ 4.0 工具開發的行動裝置應用程式可以直接使用 Windows 平台提供的 GDI 功能,但是使用 Visual Studio .NET 2003 搭配 Visual Basic 或是 C# 開發行動裝置應用程式的程式開發者就要利用平台呼叫 (PInvoke) 的技巧才能呼叫 Windows CE 平台提供的 GDI 功能。

  3. 使用 Third-Party 的解決方案
    談到 Third-Party 的解決方案,不用付費,而 Open Source 的首推 OpenNETCF.org 製作的 Smart Device Framework(http://www.opennetcf.org/CategoryView.aspx?category=Home),但是 Smart Device Framework 目前在繪圖上加強的功能還不是很多,System.Drawing 名稱空間底下只多了個 ColorTranslator 類別,負責處理顏色的轉換。除了 OpenNETCF.org 製作的 Smart Device Framework,還有一個 XrossOne Mobile GDI+( http://www.xrossone.com/download.php?PHPSESSID=a79de314ccf39bf35092c15495601e6e),XrossOne Mobile GDI+ 提供的功能主要都是二維的繪圖功能,像 .NET Compact Framework 的 Graphics 類別未提供的 DrawPie 方法就可以利用 XrossOne Mobile GDI+ 提供的 GraphicsX 類別提供的 DrawPie 方法來完成。

  4. 使用 DirectX 功能
    使用 Windows CE 平台提供的 DirectX 功能可以執行三維的繪圖和動畫 / 聲音控制,Microsoft 預計要在 Windows CE 5.0 內建 Direct3D 三維繪圖引擎,但是如果程式只需要二維的繪圖功能,使用 DirectX 功能不一定很適合。

  5. 使用 Game API(GAPI)
    使用 Windows CE平 台提供的 Game API(GAPI) 可以在 Microsoft 的行動裝置平台製作高效能、而且即時的遊戲。除了遊戲程式開發之外,GAPI 還是有提供一些基本的繪圖功能供非遊戲程式使用。

接下來我們就要為大家介紹如何使用 XrossOne Mobile GDI+ 提供的繪圖功能在行動裝置上執行繪圖的動作。

使用 XrossOne Mobile GDI+ 開發行動裝置應用程式
XrossOne Mobile GDI+ 提供行動裝置應用程式執行高品質的二維向量繪圖所需要的功能,而且提供完整的 C# 原始碼,其提供了幾乎所有的 .NET Framework的GDI+ 繪圖功能,包括 2D Transformation、漸層處理、去鋸齒 (anti-alias)、和旋轉等等功能。

[注意]
要使用 XrossOne Mobile GDI+ 的繪圖功能開發行動裝置應用程式,您必須先下載和安裝 XrossOne Mobile GDI+。XrossOne Mobile GDI+ 沒有呼叫任何 Windows 平台提供的C函數 (平台呼叫),也沒有使用 unsafe 編譯設定使圖形處理的速度加快,所以目前的版本執行速度較 .NET Framework 相同的功能慢。

XrossOne Mobile GDI+ 提供的名稱空間
XrossOne Mobile GDI+ 提供了三個名稱空間,XrossOne.Drawing、XrossOne.DrawingFP、和 XrossOne.FixedPoint,其功能詳見表 1 的說明:

表 1:XrossOne Mobile GDI+ 提供的三個名稱空間
 

名稱空間 說明
XrossOne.Drawing XrossOne 對 GDI+ 功能的擴充,應用程式主要使用的名稱空間,名稱空間中的類別名稱和 .NET Compact Framework 提供對等功能的類別相似,只是結尾多了一個 X,例如 PenX、LinearGradientBrushX 等等。
XrossOne.DrawingFP 以 Fixed Point 為基礎的二維繪圖引擎,提供二維向量運算,包括去鋸齒演算法、Transformation、Gradient、Alpha Channel Composition、以及 Line Cap/Join Decoration 等等 .NET Compact Framework 未提供的功能。
XrossOne.FixedPoint 16.16 Fixed Point 計算引擎,提供最底層的數學運算,包括數值和陣列的計算。

應用程式可以利用 XrossOne Mobile GDI+ 提供的功能完成原先使用 .NET Compact Framework 不容易完成的繪圖功能,例如繪製 Arc、Curve、Pie、貝氏 (Bezier) 曲線、Cardinal 曲線、轉置、旋轉等常見的幾何圖形,而且可以設定畫筆的寬度,不像 .NET Compact Framework 只支援寬度為 1 的畫筆。

利用 XrossOne Mobile GDI+ 執行繪圖的工作

下載並安裝妥 XrossOne Mobile GDI+ 之後,您可以啟動 Visual Studio .NET 並選擇[檔案|新增|專案]功能,建立一個 [智慧型裝置應用程式型態的專案],Visual Studio .NET 就會詢問您要開發 Pocket PC、Windows CE、或是 Smartphone 裝置的應用程式,如圖 2 所示:

\
圖 2:選擇行動裝置應用程式執行的平台的畫面

選擇行動裝置應用程式執行的平台之後按下 [確定] 鍵完成建立專案的動作。

[注意]
如果您的電腦未安裝 Smartphone 2002 SDK 或是 Smartphone 2003 SDK,則於圖 2 的畫面中會無法選擇 [Smartphone] 當做應用程式執行的平台。

應用程式專案建好之後,您必須讓專案參考到 XrossOne Mobile GDI+ 的組件。您可以選擇 [專案| 加入參考]功能,再按下出現的畫面中的 [瀏覽] 鍵,參考到 XrossGDIPlus 的組件 (位置放在 C:\ XrossGDIPlus 安裝的目錄 \XrossGDIPlus\bin\Debug 目錄),名稱為 XrossOne.Drawing.dll),如圖 3 所示:

\
圖 3:參考 XrossGDIPlus 組件的畫面

using XrossOne.Drawing;

做好之後我們就可以在行動裝置中使用 XrossOne Mobile GDI+ 提供的功能執行繪製二維幾何圖形的工作了

要使用 XrossOne Mobile GDI+ 執行繪製圖形的動作,首先我們必須建立一個 GraphicsX 類別的物件,利用 GraphicsX 類別的物件提供的方法執行繪圖的動作,然後再呼叫 GraphicsX 類別的物件的Flush方法將繪製的成果全部丟到 .NET Compact Framework GDI+ 提供的 Graphics 類別的物件上顯示,以下就是使用 XrossOne Mobile GDI+ 執行畫線動作的程式範例:

private GraphicsX=null;
 
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
         gx= new GraphicsX(Width, Height);   
         //建立 GraphicsX 類別的物件
         gx.Clear(Color.White);              
         //將繪圖區域清成白色
         PenX p=new PenX(Color.Red, 2);      
         //建立紅色,寬度為 2 的畫筆
         gx.DrawLine(p,0,0,100,100);         
         //起點為 0,0,終點為 100,100,畫一條直線
         gx.Flush(e.Graphics);              
         //將畫好的結果交由 .NET Compact Framework  GDI+ 顯示
}

 

XrossOne Mobile GDI+ 提供了大部分 .NET Compact Framework 提供的繪圖功能,要利用 XrossOne Mobile GDI+ 提供的繪圖功能,我們可以先在類別中宣告以下的變數,負責存放使用者指定的繪圖位置以及 GraphicX 類別的物件:

GraphicsX gx=null;
//存放 GraphicsX 類別的物件
int X;                                                                                 
//存放使用者指定的繪圖位置的X 座標
int Y;                                                                                 
//存放使用者指定的繪圖位置的Y 座標

 

接下來我們可以在處理 Form1 的 Load 事件時建立好欲使用的 GraphicsX 類別的物件,並將繪圖區域的背景清成白色,做好的 Form1_Load 事件處理函數如下:

private void Form1_Load(object sender, System.EventArgs e)
{
         gx=new GraphicsX(Width, Height);                                      
         //建立 Graphics X 類別的物件
         gx.Clear(Color.White);                                                         
         //將繪圖區域的背景清成白色
}

 

如果要畫線條,您可以先建立畫線條欲使用的畫筆,再呼叫 GraphicsX 類別的物件的 DrawLine 或是 DrawLines 方法繪製一條或是多條線條,做法如下:

PenX p=new PenX(Color.Red, 2); 
//建立紅色,寬度為 2 的畫筆
gx.DrawLine(p,0,0,X,Y);                             
//使用建立的畫筆從起點 (0,0) 到終點 (X,Y) 畫一條直線

 


如果要畫幾何圖形,您可以呼叫 GraphicsX 類別的物件提供的 FillRectangle 方法(畫矩形)、FillEllipse 方法(畫圓形)、或是 FillPie 方法(畫 Pie)來完成,例如以下的範例就會建立藍色的刷子,再刷滿指定的矩形:
 
BrushX b=new SolidBrushX(Color.Blue);    
//建立藍色的實心刷子
gx.FillRectangle(b,X,Y,50,50);              }
//使用刷子刷滿左上角點為 (X,Y),寬度和高度皆為 50 的矩形

 

如果您需要畫圓形,您可以利用 GraphicsX 類別的物件提供的 FillEllipse 方法來完成,做法如下:

BrushX b=new SolidBrushX(Color.Red); 
//建立紅色的實心刷子
gx.FillEllipse(b, X, Y, 50, 50); 
//使用刷子刷滿左上角點為 (X,Y),寬度和高度皆為50 的矩形定義的
//內切圓

 

[提示]

和 .NET Compact Framework 的 GDI+ 一樣,呼叫 XrossOne Mobile GDI+ 提供的 FillRectangle 方法可以畫出實心的矩形,而呼叫 DrawRectangle 方法可以畫出空心的矩形,呼叫 FillEllipse 方法可以畫出實心圓形,呼叫 DrawEllipse 方法則可以畫出空心圓形,以此類推。

您可以 GraphicsX 類別的物件提供的 DrawArc 方法來繪製目前 .NET Compact Framework 未支援繪製的弧形,做法如下:

PenX p=new PenX(Color.Pink, 2); 
//建立粉紅色,寬度為 2 的畫筆
gx.DrawArc(p,X,Y,50,50,30,90);              
//在左上角點為 (X,Y),寬度和高度皆為 50 的的矩形中畫個起始
//角度為30度,結束角度為90度的弧

曲線也是目前的 .NET Compact Framework 未支援的功能,所以使用 VB.NET 或 C# 語言開發行動裝置應用程式時就必須依靠 XrossOne Mobile GDI+ 之類的功能才能方便地畫出曲線。以下就是一個使用 XrossOne Mobile GDI+ 提供的功能繪製曲線的例子:

PenX p=new PenX(Color.RoyalBlue, 2); 
//建立藍色,寬度為 2 的畫筆
Point p1 = new Point( X,  Y);         
//準備 7 個座標點
Point p2 = new Point(X+100,  Y+25);
Point p3 = new Point(X+200,  Y+150);
Point p4 = new Point(X+250,  Y+50);
Point p5 = new Point(X+50, Y+100);
Point p6 = new Point(X+100, Y+200);
Point p7 = new Point(X+150, Y+250);
Point[] curvePoints ={p1,p2,p3,p4,p5,p6,p7};  
//建立座標點陣列
int offset = 0;        
//曲線起點距離陣列中第一個元素的位移
int numSegments = 6;   
//線段數目
float tension = 1f;
//曲線張力
gx.DrawCurve(p, curvePoints, offset, numSegments, tension);    
//繪製曲線

.NET Compact Framework的GDI+ 也沒有支援繪製派圖的功能,如果您需要繪製統計圖表,XrossOne Mobile GDI+ 提供的功能是最快速的做法,例如以下的例子可以輕易地畫出一個派圖:

BrushX b=new SolidBrushX(Color.SandyBrown); 
//建立棕色的刷子
gx.FillPie(b, X, Y, 150.8f, 130.1f, 156.5f, -280.9f); 
//繪製派圖 

如果您需要繪製數學上的貝氏曲線,XrossOne Mobile GDI+ 提供的功能也可以很方便地完成,以下就是一個繪製貝氏曲線的範例:

PenX pen = new PenX(Color.Teal,2); 
//建立鐵灰色,寬度為 2 的畫筆
float controlX1 = X+100;
//定義控制貝氏曲線的座標
float controlY1 = Y+10;
float controlX2 = X+150;
float controlY2 = Y+50;
float endX = X+50;
float endY = Y+200;
gx.DrawBezier(pen, X, Y, controlX1, controlY1, controlX2, controlY2, endX, endY);
//執行繪製

.NET Compact Framework 的 GDI+ 目前未提供的功能還有繪製圓角的矩形,以下就是利用 XrossOne Mobile GDI+ 提供的 FillRoundRectangle 方法繪製圓角矩形的做法:

除了上述的幾何圖形之外,XrossOne Mobile GDI+ 還有提供繪製漸層色彩的 LinearGradientBrushX 刷子,以下就是使用 LinearGradientBrushX 刷子塗滿應用程式視窗的做法:

Rectangle r = new Rectangle(0, 0,  Width, Height);   
//計算應用程式視窗的矩形
Color c1 = Color.Red;             
//起始色彩
Color c2 = Color.Blue;
//結束色彩
BrushX b = new LinearGradientBrushX(r, c1, c2);  
//建立 LinearGradientBrushX 類別的物件
gx.FillRectangle(b, r); 
// LinearGradientBrushX 刷滿應用程式的視窗


XrossOne Mobile GDI+ 除了提供常用,而且 .NET Compact Framework 未支援的圖形繪製功能以外,還提供數種圖形轉置 (Tranformation) 的功能,包括:RotateTransform、ScaleTransform、MultiplyTransform、以及 TranslateTranform。以下就是利用 RotateTransform 方法繪出旋轉 45 度的圖形:

PenX pen = new PenX(Color.BlueViolet, 10.5f);
/建立藍色,寬度為 10.5 的畫筆
BrushX brush = new SolidBrushX(Color.Red);
//建立紅色的實心刷子
 
gx.RotateTransform(45);
//將繪圖目標旋轉 45 
gx.FillRectangle(brush,  X, X,  100, 60);
//使用刷子繪製矩形
gx.DrawEllipse(pen, X, Y,  75, 100);
//使用畫筆繪製圓形
gx.DrawString("Hello!", new FontX("Arial", 12, FontStyle.Regular), new 
SolidBrushX(Color.Purple), X, Y);
//輸出一段文字


執行上述的程式片斷,所繪製的內容就是旋轉 45 度後的結果。 除了旋轉的功能之外,XrossOne Mobile GDI+ 還可以將繪製的內容平移。以下就是一個平台繪製內容的範例:

 
PenX pen = new PenX(Color.BlueViolet, 10.5f);
//建立紫色,寬度為 10.5 的畫筆
BrushX brush = new SolidBrushX(Color.Red); 
//建立紅色的實心刷子
 
gx.TranslateTransform(10,10); 
//將繪圖目標水平和垂直各移動 10 個單位
gx.FillRectangle(brush,  X, X,  100, 60);
//使用刷子繪出矩形
gx.DrawEllipse(pen, X, Y,  75, 100);
//使用畫筆畫一個圓形
gx.DrawString("Hello!", new FontX("Arial", 12, FontStyle.Regular), new 
SolidBrushX(Color.Purple), X, Y);
//輸出一段文字


執行上述的程式片斷您可以發現所繪製的內容會水平和垂直都各位移 10 個單位。

除了旋轉和平移之外,XrossOne Mobile GDI+ 還有提供放大和縮小的轉換。要放大或縮小繪製的內容,您可以先呼叫 ScaleTransform 方法,再繪製欲繪製的內容,所繪出的圖形就會以放大或是縮小後的結果呈現。以下就是一個將繪製的內容高度和寬度各縮小一半的的範例:

PenX pen = new PenX(Color.BlueViolet, 10.5f);
//建立紫色,寬度為 10.5 的畫筆
BrushX brush = new SolidBrushX(Color.Red);
 //建立紅色的實心刷子
 
gx.ScaleTransform(0.5f,0.5f); 
//將繪圖目標高度和寬度各縮小一半
gx.FillRectangle(brush,  X, X,  100, 60); 
//使用刷子繪出矩形
gx.DrawEllipse(pen, X, Y,  75, 100);   
//使用畫筆畫一個圓形
gx.DrawString("Hello!", new FontX("Arial", 12, FontStyle.Regular), new 
SolidBrushX(Color.Purple), X, Y); 
//輸出一段文字

執行上述的程式片斷您就可以看到所繪製的內容高度和寬度各縮小一半的結果。
 

提示

您也可以呼叫 XrossOne Mobile GDI+ 提供的 GraphicsX 類別的 Resize 方法放大或是縮小繪製的內容。

注意

如果應用程式有呼叫 GraphicsX 類別的 RotateTransform、ScaleTransform、MultiplyTransform、以及 TranslateTranform 等方法執行轉置繪圖的內容後,要記得呼叫 GraphicsX 類別的 ResetTransform 方法還原 GraphicsX 類別的物件的狀態,否則後續繪製的任何圖案都會呈現旋轉、放大 / 縮小、或是轉置後的結果。

如果要清除 GraphicsX 類別的物件上所有繪製的內容,您可以呼叫 GraphicsX 類別的 Clear 方法,並傳入使用來填滿 GraphicsX 類別的物件所管轄的繪圖空間的顏色,就可以清除 GraphicsX 類別的物件上所有的內容。例如以下的程式片斷就會還原 GraphicsX 類別的物件的轉置狀態並清除 GraphicsX 類別的物件上所有的內容:

gx.ResetTransform(); 
//還原 GraphicsX 類別的物件的狀態
gx.Clear(Color.White);  
//清除 GraphicsX 類別的物件上所有的內容

除了上述介紹的種種繪圖功能以外,XrossOne Mobile GDI+ 的 GraphicsX 類別還有提供一個名稱為 ToBitmapX 方法,讓您可以把 GraphicsX 類別的物件上繪製的內容轉換成 BitmapX 類別的物件,將繪製的內容轉換成 BitmapX 類別的物件之後可以再利用 BitmapX 類別提供的 Save 方法將 BitmapX 類別的物件的內容儲存成圖形檔。例如以下的範例就會先將繪製的內容轉換成 BitmapX 類別的物件,再將 BitmapX 類別的物件的內容儲存成圖形檔:

//利用 SaveFileDialog 取得使用者輸入的存檔名稱
if (saveFileDialog1.ShowDialog()==DialogResult.OK)  
{
//先將繪製的內容轉換成 BitmapX 類別的物件,再將 BitmapX 類別的物件的內容儲存成圖形檔
         gx.ToBitmapX().Save(saveFileDialog1.FileName); 

 

 

編譯並執行應用程式

程式做好之後您可以按下 Ctrl+F5 組合鍵,對專案執行建置的動作,專案建置成功之後,Visual Studio .NET 就會顯示一個詢問您要將做好的應用程式部署到那一種模擬器或是實際的行動裝置上執行的畫面,如圖 4 所示:

\
圖 4:詢問要將做好的應用程式部署到那一種模擬器或是實際的行動裝置上執行的畫面

[注意]

您可以選擇的部署平台視您建立專案時選擇的應用程式執行平台和電腦中安裝的 SDK 而異,如果您的電腦中未安裝 Pocket PC 2003 SDK,則圖 4 的畫面中只有兩個對象可以部署,即 [Pocket PC 2002 模擬器(預設)] 和 [Pocket PC裝置]。

按下圖 4 中的 [部署] 鍵,Visual Studio .NET 就會開始把建置成功的行動裝置應用程式部署到指定的平台,這個動作需要花一些時間。如果您選擇要把開發好的行動裝置應用程式部署到實際的行動裝置 (在圖 4 中選擇 [Pocket PC 裝置] 或是 [Smartphone Device]),您的行動裝置必須透過行動裝置的底座連到開發應用程式的電腦,而且開發應用程式的電腦中必須安裝有 Microsoft ActiveSync 軟體。

應用程式成功部署到模擬器或是實際的行動裝置之後您就可以利用應用程式提供的功能操作應用程式了。

利用 XrossOne Mobile GDI+ 製作的繪圖程式執行的畫面如圖 5 所示:

\
圖 5:XrossOne Mobile GDI+ 製作的繪圖程式執行的情形

[結語]

在這一篇文章中我們學會了如何使用 XrossOne Mobile GDI+ 提供的功能在行動裝置上完成一些 .NET Compact Framework 不容易完成的功能,在這個例子中您可以感受到開發行動裝置應用程式時遇到 .NET Compact Framework 不支援的功能的確比較棘手,如果我們使用 eMbedded Visual C++ 4.0 或是 Visual Studio 2005 提供的 Visual C++ 開發行動裝置的應用程式,比較不會發生功能受限的狀況,但是在學習和使用上也會相對地比較困難。下一回我們將為大家介紹在行動裝置繪圖的其他選擇。

关键词:VS.NET

赞助商链接: