快速业务通道

Merlin的魔力: 练习完全控制图形显示 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

Merlin的魔力: 练习完全控制图形显示

时间:2011-02-02 IBM John Zukowski

您是否喜欢让程序搞一些恶作剧,让别人感到不舒服?如果您回答“是”,那么这个月的技巧文章一定对您的胃口。使用 J2SE 1.4,您的 Java 程序现在可以更改视频方式并获得对屏幕的绝对控制。您不必让别人随心所欲地玩电脑;您差不多可以拥有整个控制权。感谢新的全屏幕独占模式(FEM)API 为我们提供了这个无与伦比的强大功能。

即使您回答“不”,不想以惹恼他人来取乐,您也将发现 FEM API 提供了许多帮助。通过直接对显存进行写操作,FEM API 提供了对显示的完全控制 ― 这对于游戏开发来说十分理想,虽然还有许多其它应用。例如,一些程序只有用特定大小的屏幕看上去才更好,并且才能更好地工作。请继续读下去,以发掘您内心有关控制方面的奇思怪想。

更改显示方式

让我们先从研究 FEM API 的 java.awt.DislayMode 类开始,该类包装了特定显示方式的屏幕大小和刷新频率。受支持的方式特定于系统的硬件支持。

要找出特定系统的受支持方式,请查看 GraphicsEnvironment 。通过该环境,您可以获得缺省屏幕设备 GraphicDevice ,通过该屏幕设备可以获得显示方式,如清单 1 所示:

清单 1. 查找显示方式

GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice graphicsDevice = graphicsEnvironment.getDefaultScreenDevice(); DisplayMode displayModes[] = graphicsDevice.getDisplayModes();

还可以使用 getDisplayMode() 方法获得当前的显示模式,如清单 2 所示:

清单 2. 获得当前的显示方式

DisplayMode originalDisplayMode =     graphicsDevice.getDisplayMode();

更改方式经证实相对容易些,但必须先利用 GraphicsDevice 的 isDisplayChangeSupported() 方法询问所涉及的图形设备是否支持更改。

一旦知道了这一点,要更改方式,使用 setDisplayMode() 方法,以传入新方式。显示方式更改一般在 try / finally 块中发生,以便于 finally 块将代码复位成初始方式。虽然该过程不是绝对必需的,但它可以确保在程序完成时有一个安全的方式。清单 3 显示了用于更改显示方式的典型模式:

清单 3. 更改方式

GraphicsDevice graphicsDevice = ...    DisplayMode originalDisplayMode = graphicsDevice.getDisplayMode();    DisplayMode newDisplayMode = ...    try {     if (graphicsDevice.isDisplayChangeSupported()) {      graphicsDevice.setDisplayMode(newDisplayMode);     }    } finally {     graphicsDevice.setDisplayMode(originalDisplayMode);    }

Merlin的魔力: 练习完全控制图形显示(2)

时间:2011-02-02 IBM John Zukowski

使用全屏幕窗口

使用 FEM API,进入全屏幕窗口是轻而易举的:只要将 window 传递给 GraphicsDevice 的 setFullScreenWindow() 方法,如清单 4 所示。当您想要返回非全屏幕方式时,将 null 传递给该方法。当然,先通过使用 isFullScreenSupported() 方法来检查 GraphicsDevice 是否支持全屏幕方式。

清单 4. 进入全屏幕方式

GraphicsDevice graphicsDevice = ...    Window window = ...    try {     if (graphicsDevice.isFullScreenSupported()) {      graphicsDevice.setFullScreenWindow(window);     }    } finally {     graphicsDevice.setFullScreenWindow(null);    }

为了说明目前为止您所学的所有内容,清单 5 包含了一个完整示例。清单 5 中的代码获得显示方式,随机选择一个方式进行更改,然后显示一个带有文本“Hello, Worl

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号