设为首页 加入收藏

TOP

17.8 利用GDI+实现翻页效果(1)
2013-10-07 14:39:30 来源: 作者: 【 】 浏览:58
Tags:17.8 利用 GDI 实现 效果

17.8  利用GDI+实现翻页效果(1)

相册的翻页效果是相册实现的关键技术,本节将详细介绍相册翻页效果实现的过程。相册翻页过程如图17.21所示。

 
图17.21  相册的翻页过程

整个翻页动画可以概括为:

(1)完全绘制出第1页和第2页。在绘制完成之后,区域3和区域2部分将会遮挡住第2页的原来可见部分。

(2)计算出对称线及区域3和区域2的裁剪区域。

(3)绘制区域2部分。这是下面的一页的部分区域(第4页)。

(4)根据热点进行相应转换,并且进行相应旋转。

(5)绘制区域3部分。这是第2页在翻页过程中显示的它的背面(第3页)的内容。

要深刻理解这个过程中需要注意以下几点:

1.翻动轴点及区域2及区域3的对称线

翻动轴点代表在翻页时折痕在水平轴线上的位置,它标明对称线的起始位置。在翻页过程中,翻动轴点一直从页边缘到书中间这段距离之间移动。从页边到翻动轴点的这段距离(m_x)将随着页面的翻动而变化。当翻动轴点到达书的中间位置时,动画就停止了,这时m_x=width。

对称线代表翻页时页面的折痕。它是用于计算在翻页时参与的页面可见部分。在程序中,对称线控制两件事情:

分开区域2和区域3部分的裁剪区域。

确定了区域3部分进行转换的坐标原点。

对称线可以用下面两个等式来描述:

  1. a = 45 + ( (45 *m_x) / width )  
  2. h = m_x Tan ( a )  

角度a会随着x的变化而变化。这个等式表明当x=0时a = 45°,并且当x= width时a = 90°。

翻页刚开始时,x=0,因此区域2和区域3部分并不可见。随着x的增加,对称线就形成了直角三角形的斜边。三角形由3个长度确定:对称线、m_x和高度h。如图17.21这种情况。

随着x的增加,将会出现h>= height的情况。当这种情况出现后,对称线与页面相交的区域将会由三角形变成梯形。梯形的高度就是height,如图17.22所示。

 
图17.22  梯形区域3

2.翻页过程中的3个区域

确定了翻动轴点及对称线的作用后,需要明确3个区域的含义,即区域1、区域2及区域3。

区域1部分:这部分是要翻动的页面在裁减出区域2和区域3部分之后的可见部分(第2页)。

区域2部分:这部分来自于正在翻动的页面之下的另一页面,在这个例子中指的是第4页的可见部分。区域2就是被对称线与页面形成的闭合曲线所裁减的部分。在这个部分之上的页面(第2页)的相应部分将会被直接裁减。显而易见,随着x的增加(a也随着增加),这个可见部分将会越来越大。

区域3部分:这部分区域的图像表示正在翻动的页面背面图像。在这个例子中,区域3部分区域代表了第3页的可见部分。区域3部分也是通过对称线指定的,但是在页面的这一边(对称线的左边)。

在上面两幅图中,当翻动第2页时,区域2部分将会是第4页的右下部分,而区域3部分将会是第3页的左下部分。如图17.23所示为区域2和区域3之间的关系。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.8 利用GDI+实现翻页效果(2) 下一篇17.7.3 利用双缓冲解决闪屏问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: