方法 : 画面の向きと解像度を変更する
更新 : 2007 年 11 月
次の表は、.NET Compact Framework でサポートされている Pocket PC および Smartphone の画面の向きを示しています。寸法は、幅、高さの順にピクセル数で示してあります。
画面の向き |
96 DPI の標準寸法 |
192 DPI (高解像度) の標準寸法 |
---|---|---|
ポートレート (縦長) - Pocket PC ポートレート (縦長) - Smartphone |
240 × 320 176 × 220 および 240 × 320 |
480 × 640 352 × 440 および 480 × 640 |
ランドスケープ (横長) - Pocket PC のみ |
320 × 240 |
640 × 480 |
スクエア (正方形) - Pocket PC のみ |
240 × 240 |
480 × 480 |
コントロールの固定やドッキングを使用すると、画面の方向が違ってもコントロールのサイズを自動的に変更して、合わせることができます。コントロールを固定すると、一端からの距離が指定の距離に保たれます。ドッキングすると、親コンテナの一辺に結合されます。
含まれているコントロールまたはフォームのサイズが変更される場合は、動作はそのコントロールの 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 を使用したテキストの回転のサンプル」を参照してください。