如何:处理方向和分辨率更改
更新:2007 年 11 月
下表显示 .NET Compact Framework 所支持的 Pocket PC 和 Smartphone 屏幕方向。维数以像素为单位(宽×高)。
屏幕方向 |
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 |
您可以使用锚定和停靠来自动调整控件大小,以便窗体内容适应不同的屏幕方向。锚定可保持与某条边的指定距离,停靠则可对齐父容器的一条边。
控件的 Anchor 属性用于确定在调整包含该控件的控件或窗体的大小时该控件的调整行为。控件的 Dock 属性用于指定包含该控件的控件要停靠哪些边。
在 .NET Compact Framework 中,锚定和停靠的行为与 .NET Framework 全功能版中的行为相同。
您可以自定义应用程序,使之适应不同的 DPI(每英寸点数)像素分辨率设置。
处理屏幕方向更改
您可以将本应位于窗体特定区域中的控件放置在某个容器控件(如 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 显示旋转文本的示例 显示了一个手动缩放示例。