Display Mode
一旦应用程序处于全屏独占 Pattern,它便可以利用主动设置显示 Pattern 的优势。显示 Pattern(java\.awt\.DisplayMode
)由大小(显示器的宽度和高度,以像素为单位),位深度(每像素的位数)和刷新率(显示器更新频率)组成。某些 os 允许您同时使用多个位深度,在这种情况下,特殊值BIT_DEPTH_MULTI
用作位深度的值。另外,某些 os 可能对刷新率没有任何控制(或者您可能不关心刷新率设置)。在这种情况下,特殊值REFRESH_RATE_UNKNOWN
用作刷新率值。
如何设置显示 Pattern
要获取当前的显示 Pattern,只需在图形设备上调用getDisplayMode
方法。要获取所有可能的显示 Pattern 的列表,请调用getDisplayModes
方法。不论您是否处于全屏独占 Pattern,均可随时调用getDisplayMode
和getDisplayModes
。
在try更改显示 Pattern 之前,您应该首先调用isDisplayChangeSupported
方法。如果此方法返回false
,则 os 不支持更改显示 Pattern。
仅在全屏排他 Pattern 下才能更改显示 Pattern。要更改显示 Pattern,请以所需的显示 Pattern 调用setDisplayMode
方法。如果显示 Pattern 不可用,不支持更改显示 Pattern 或未以全屏独占 Pattern 运行,则会引发运行时异常。
更改显示 Pattern 的原因
设置显示 Pattern 的主要原因是性能。如果应用程序选择显示的图像与屏幕共享相同的位深,则它可以更快地运行。同样,如果您可以指望显示器具有特定的尺寸,则可以简化到该显示器的绘图,因为您不必根据用户对显示器的设置方式来缩放。
Programming Tips
以下是一些选择和设置显示 Pattern 的技巧:
-
在try更改图形设备上的显示 Pattern 之前,请检查
isDisplayChangeSupported
方法返回的值。 -
在try更改显示 Pattern 之前,请确保您处于全屏独占 Pattern。
-
与使用全屏 Pattern 一样,在
try...finally
子句中时,设置显示 Pattern 更为可靠:
GraphicsDevice myDevice;
Window myWindow;
DisplayMode newDisplayMode;
DisplayMode oldDisplayMode
= myDevice.getDisplayMode();
try {
myDevice.setFullScreenWindow(myWindow);
myDevice.setDisplayMode(newDisplayMode);
...
} finally {
myDevice.setDisplayMode(oldDisplayMode);
myDevice.setFullScreenWindow(null);
}
-
在为您的应用程序选择显示 Pattern 时,您可能需要保留一个首选显示 Pattern 列表,然后从可用显示 Pattern 列表中选择最佳显示 Pattern。
-
作为后备,如果您想要的显示 Pattern 不可用,您可能只想以固定大小在窗口 Pattern 下运行。