我正在 Windows 8 下的 Java 应用程序中调试图形更新。
Mac 用户可以使用Quartz Debug实时刷新更新的屏幕区域。这允许确定重绘频率和错误更新 - 有时只有小区域需要重绘,但整个窗口都会被重绘。该应用程序甚至显示接收更新但内容不变的区域。
是否有类似的 Windows 调试工具允许我检测重绘区域?
我正在 Windows 8 下的 Java 应用程序中调试图形更新。
Mac 用户可以使用Quartz Debug实时刷新更新的屏幕区域。这允许确定重绘频率和错误更新 - 有时只有小区域需要重绘,但整个窗口都会被重绘。该应用程序甚至显示接收更新但内容不变的区域。
是否有类似的 Windows 调试工具允许我检测重绘区域?
同时我发现了JXLayer,一个带有 BSD 许可证的 SwingLabs 子项目。包含 jxlayer-3.0.4.jar
到我的项目库中后,我能够动画重绘。如果您有 JFrame 和 JPanel,请使用:
JFrame frame = ...;
JPanel panel = ...;
if (DEBUG_REPAINT) {
JXLayer<JPanel> layer = new JXLayer<>(panel);
DebugRepaintingUI dp = new DebugRepaintingUI(50); // 50ms delay
layer.setUI(dp);
frame.setContentPane(layer);
}
else {
frame.setContentPane(panel);
} }
默认情况下,DebugRepaintingUI
在 XORMode 中绘制更改区域,但我可以调整源以创建不那么突兀的效果。
这种方法的问题是它实际上修改了应用程序。也许有人有更好的主意。