设为首页 加入收藏

TOP

17.9.3 电子相册浏览模块的设计与实现(8)
2013-10-07 14:39:55 来源: 作者: 【 】 浏览:50
Tags:17.9.3 电子相册 浏览 模块 设计 实现

17.9.3  电子相册浏览模块的设计与实现(8)

【代码解析】

第5~40行绘制封面翻页时的页面2。第41~79行绘制右翻页到封底时的页面2。第81~101行求算封面翻页及右翻页到封底时旋转页面的路径(封面翻页时为页面1,右翻页到封底时为封底页面)。右翻页到封底翻页时,第105~117行根据上面求出的路径绘制封底页面,并将其选装到相应的位置。封底翻页及左翻页到封面的实现与本过程类似,不再详述。

(9)细心的读者可能发现了一个问题,那就是无论是右翻页还是两边翻页过程,在翻页完成后都做了同一件事情:

  1. PostMessage(WM_MY_TURN,0,0); 

这是一个消息发送函数,给本窗体发送了一个自定义消息WM_MY_TURN。这个消息的定义如下:
  1. #define WM_MY_TURN (WM_USER + 100) 

它的消息映射如下:
  1. ON_MESSAGE(WM_MY_TURN, OnChangePage) 

也就是说,WM_MY_TURN消息的处理函数为OnChangePage()。而每次翻页完成后发送消息调用的就是这个函数,它主要实现了换页的功能。

下面分步讲解这个函数。

① 翻页状态的转换

每次翻页完成后需要检验当前的状态已决定下一步的状态。

  1. 01  switch(m_turnType)  
  2. 02  {  
  3. 03  case type_endToleft :               //封底到左翻页  
  4. 04      m_turnType = type_left;   
  5. 05      m_curNum = m_photoNum + 2;  
  6. 06      break;  
  7. 07  case type_headToright:              //封面到右翻页  
  8. 08      m_turnType = type_right;  
  9. 09      m_curNum = -2;  
  10. 10      break;  
  11. 11  case type_leftToright:              //左翻页到右翻页  
  12. 12      m_curNum -3;  
  13. 13      m_turnType = type_right;  
  14. 14      break;  
  15. 15  case type_rightToleft:              //右翻页到左翻页  
  16. 16      m_curNum += 3;  
  17. 17      m_turnType = type_left;  
  18. 18  }  

② 右翻页时计算载入后两张照片

右翻页与封面翻页处理方法相同,都是载入后面的两张相片。参与翻动的共4页载有4张照片,而每次变化的只有两张。将新载入的放入页面3及页面4,将页面3中的相片传给页面1,页面4上的相片传给页面2。过程如图17.42所示。

 
(点击查看大图)图17.42  右翻页相册载入相片的过程

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.9.3 电子相册浏览模块的设计与.. 下一篇17.9.3 电子相册浏览模块的设计与..

评论

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