你们都看过那些基于 Flash 的翻页书。我想用 Java 创建相同的东西。我正在使用 JTextArea 作为书页。我想知道的是如何通过重写 componentPaint 方法结合 Mouse/KeyListener 来实现翻页效果?
最佳答案
您需要将现有页面呈现到离屏缓冲区中,然后转换缓冲区以呈现页面翻转。
所以,
- 创建一个屏幕大小的离屏图像缓冲区。
- 获取缓冲区的图形上下文并使用该上下文调用 super.componentPaint
- 您现在已将页面呈现为“扁平化”并放入屏幕外缓冲区
- 根据您的屏幕上下文,
- 清理该区域,
- 复制缩放以显示翻转的屏幕外页面
- 在顶部绘制一个 alpha 渐变以“阴影”页面,使其看起来像 3D
您需要在线程中驱动它,以便在动画播放时重复调用重新绘制。因此,设置一个“pageIsTurning
”标志和“percentageTurned
”,这将向绘画方法指示它需要进行特殊绘制以及它在动画中的位置。在重复调用 paint 方法时更新 percentageTurned 标志,然后在完成后重置标志并允许 componentPaint 方法默认为 super.componentPaint。
关于java - Java/Swing 中的翻书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660942/