HOW TO:處理方向和解析度變更
更新:2007 年 11 月
下表顯示 .NET Compact Framework 支援的 Pocket PC 和 Smartphone 螢幕方向。尺寸是以像素表示,即寬度 x 高度。
螢幕方向 |
96 DPI 一般尺寸 |
192 DPI (高解析度) 一般尺寸 |
---|---|---|
縱向 - Pocket PC 縱向 - Smartphone |
240 x 320 176 x 220 和 240 x 320 |
480 x 640 352 x 440 和 480 x 640 |
橫向 - 只限 Pocket PC |
320 x 240 |
640 x 480 |
方形 - 只限 Pocket PC |
240 x 240 |
480 x 480 |
您可以使用錨定和停駐,自動調整控制項的大小,使表單內容適應於不同的螢幕方向。錨定會維持與邊緣的指定距離,而停駐則會貼齊父容器 (Container) 的邊緣。
當控制項的 Anchor 屬性的包含控制項或表單調整大小時,這個屬性會判斷它的調整大小行為。控制項的 Dock 屬性指定要貼齊其包含控制項的哪些邊緣。
錨定和停駐在 .NET Compact Framework 和完整 .NET Framework 都具有相同的行為。
您可以自訂應用程式,以適應不同的 DPI (Dots Per Inch) 像素解析度設定。
若要處理螢幕方向變更
您可以將應該位於表單特殊區域的控制項放在容器控制項中,如 Panel,然後將 Panel 的 Dock 屬性設定為所需的邊緣。
若要維護控制項相對於其表單側邊的適當大小和位置,請將控制項上的 Anchor 屬性設定為所需的位置。
例如,若要讓按鈕永遠出現在右下角並維護其大小,請使用下列陳述式:
Me.Button1.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right
this.button1.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
在 Microsoft Visual Studio 2005 中,您可以在 [屬性] 窗格中設定錨定和停駐設定。
若要變更螢幕方向
如果您的 Pocket PC 正在執行 Windows Mobile 5.0 版,則可將螢幕方向從角度為零的縱向變更為 ScreenOrientation 列舉型別所指定的 90、180 和 270 度。例如,下列陳述式會設定橫式方向:
SystemSettings.ScreenOrientation = ScreenOrientation.Angle270
SystemSettings.ScreenOrientation = ScreenOrientation.Angle270;
請注意,螢幕方向不只會變更應用程式,也會變更裝置。因此,最好是將螢幕方向設回其在 FormClosing 事件之事件處理程式碼中的原始設定。
若要處理螢幕解析度中的變更
當您在 Microsoft Visual Studio 2005 中建立智慧型裝置專案時,設計工具會提供程式碼,適當地自動調整控制項以適合裝置的螢幕解析度,否則,如果您的應用程式是在具有不同 DPI 解析度的裝置 (不是用於開發的裝置) 上執行,則表單將出現太大或太小的情形。因此,表單上的控制項必須適當地進行調整。
當您在 Visual Studio 2005 中建立智慧型裝置專案時,設計工具會在 InitializeComponent 方法中加入下列陳述式:
[Visual Basic]
Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
[C#]
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
這些陳述式顯示正在對解析度為 96 DPI 的裝置開發的應用程式,以及顯示使用 DPI 模式執行自動調整。請注意,96 DPI 是從執行 Visual Studio 2005 的桌上型電腦取得的預設值。設計工具會自動產生這個程式碼,而且表單上的控制項將自動調整,以處理不同的 DPI 設定。
如果您的應用程式包含以 OnPaint 方法繪製的圖形,則它們將不會自動調整。您將需要使用 Graphics 物件的 DpiX 和 DpiY 屬性,來判斷適當的調整。請參閱使用 LogFont 的旋轉文字範例取得手動調整的範例。