Flip Book in Java/Swing



你们肯定见过那些基于flash的翻页书。我想在Java中创建相同的。我使用JTextArea的叶子的书。我想知道的是如何实现页面翻转效果,通过重写componentPaint方法结合鼠标/KeyListener ?

您需要将现有页面呈现为屏幕外缓冲区,然后转换缓冲区以呈现页面翻转。

  • 创建一个屏幕大小的屏幕外图像缓冲区
  • 获取缓冲区的图形上下文,并使用该上下文调用super.componentPaint
  • 你现在已经把你的页面渲染成"平面"到你的屏幕缓冲区
  • 在屏幕上下文中,
    • 清除区域,
    • 复制屏幕外页面缩放以显示翻转
    • 在顶部画一个alpha渐变来"遮蔽"页面,使其看起来像3D

你需要在一个线程中驱动它,以便在动画播放时反复调用重新绘制。所以设置一个"pageIsTurning"标志,和"percentageTurned"标志,这将指示油漆方法,它需要做特殊绘图和它在动画中的位置。在重复调用paint方法时更新percentageTurned标志,完成后重置标志并允许componentPaint方法默认为super.componentPaint.

与其重新发明轮子,不如试试下面这个了不起的自定义JComponent源代码,它可以完全满足您的要求:

http://lmireport.googlecode.com/svn/trunk/ireport/src/be/savat/components/JBookPanel.java

享受。:)

最新更新