wince滑屏效果的实现

    之前读了norains侠的一篇文章——“IPhone平滑滚动效果的实现”,原文地址是:

http://blog.csdn.net/norains/archive/2010/06/14/5670538.aspx

       觉得写的浅显易懂,有必要尝试一下。原理比较简单,中途又得到了n侠的指点,很快完成了该效果的测试。下面记录一下步骤。整屏滑动需要两张图片,一张滑出,一张滑入。

 

 

 

      

 

        所采用的wince设备的分辨率为800*480,首先创建一个缓冲DC,大小为1600*480,然后将两幅位图一左一右紧挨着绘制到该缓冲DC中。代码如下:

 

 

  1. hdc = ::GetDC(m_hWnd);  
  2.   
  3. hdcMem = CreateCompatibleDC(hdc);  
  4.   
  5. hBitmap = CreateCompatibleBitmap(hdc, 1600, 480);  
  6.   
  7. hOldMemBmp = (HBITMAP)SelectObject(hdcMem, hBitmap);  
  8.   
  9.   
  10.   
  11. hdcBmp = CreateCompatibleDC(hdc);  
  12.   
  13. hBmpDis = LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,0);  
  14.   
  15. hOldBmp = (HBITMAP)SelectObject(hdcBmp,hBmpDis);  
  16.   
  17. BitBlt(hdcMem,0,0,800,480,hdcBmp,0,0,SRCCOPY);  
  18.   
  19.   
  20.   
  21. hBmpDis = LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP2),IMAGE_BITMAP,0,0,0);  
  22.   
  23. SelectObject(hdcBmp,hBmpDis);  
  24.   
  25. BitBlt(hdcMem,800,0,1600,480,hdcBmp,0,0,SRCCOPY);  

    接下来的代码是实现滑屏效果的关键,其实是非常简单的。

 

  1. //缓慢的左出右入  
  2.   
  3. for(DWORD dwPos = 0; dwPos <= 800; )     
  4.   
  5. {     
  6.   
  7.     //将缓存HDC绘制到源HDC中,以实现平滑滚动的效果    
  8.   
  9.     BitBlt(hdc, 0, 0, 800, 480, hdcMem, dwPos, 0, SRCCOPY);     
  10.   
  11.     dwPos = dwPos + 1;  
  12.   
  13. }   
  14.   
  15. //快速的左出右入  
  16.   
  17. for(DWORD dwPos = 0; dwPos <= 800; )     
  18.   
  19. {     
  20.   
  21.     //将缓存HDC绘制到源HDC中,以实现平滑滚动的效果    
  22.   
  23.     BitBlt(hdc, 0, 0, 800, 480, hdcMem, dwPos, 0, SRCCOPY);     
  24.   
  25.     dwPos = dwPos + 50;  
  26.   
  27. }   
  28.   
  29. //快速的右出左入  
  30.   
  31. for(int dwPos = 800; dwPos >= 0; )     
  32.   
  33. {     
  34.   
  35.     //将缓存HDC绘制到源HDC中,以实现平滑滚动的效果    
  36.   
  37.     BitBlt(hdc, 0, 0, 800, 480, hdcMem, dwPos, 0, SRCCOPY);     
  38.   
  39.     dwPos = dwPos - 50;  
  40.   
  41. }  

 

 

    下面的图显示屏幕正在滑动中:

 

posted @ 2012-06-25 20:01  nsoft  阅读(341)  评论(0编辑  收藏  举报