程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 用c#和GDI+實現雜志翻頁動畫效果(5)

用c#和GDI+實現雜志翻頁動畫效果(5)

編輯:關於C語言

繪制動畫

每一幀動畫都是在timer1_Tick方法中繪制到緩沖區中的CurrentShownBitmap對象上。CurrentShownBitmap方法僅僅是將繪制到屏幕上。

主要功能說明

計算動畫中每一幀裡B和C部分的圖象都是由以下方法完成的:

private GraphicsPath GetPageUnderGraphicsPath(int x,

refdouble a, int height, int width,

bool isUnderSide, TurnType type)

參數x代表從頁面邊緣到熱點處的距離(前面已經說明),height和width參數代表當前頁面要顯示的高度和寬度。isUnderSide參數用來告訴程序是否在計算C部分區域(正在翻動的那一頁的背面),最後一個參數type是表示頁面是左翻頁還是右翻頁。基本上,isUnderSide和type參數是用來獲取圖形路徑的正確性的,參數a如上所述是代表當前角度的。參數a傳遞的是引用,隨後將在繪制C之前用於旋轉坐標(見圖4和圖5)。

使用代碼

安裝控件

為了簡單起見,這個控件有自己的圖片。初始化圖象的代碼在LoadSamples()方法中。這個方法在Sample類的構造方法中調用。

控制翻頁的速度和數目

翻頁的速度是通過一個timer來控制的,public屬性TickSpeed能用來控制翻頁速度(毫秒為單位),動畫的幀數是通過每個timer間隔熱點移動的距離來控制的。public屬性暴露給外界以控制已經移動的距離x。

調整高度

沿著背頁的頂部裁減是一個問題,public屬性HeightAdjustment用於在控件頂部留一點空白區域便於裁剪。

開始動畫

這個組件公開兩個方法來開始動畫。

animateRightPageTurn() and animateLeFTPageTurn().

注意事項

我本來試圖解當h=PAGE_HEIGHT時的非線性方程h = x Tan( 45 + ((45 * (x)) / PAGE_WIDTH) )中的x的值,我的這個蠻力辦法的代碼包含在源代碼中。是不是還有一個更優雅的辦法呢?

說明:程序的源代碼可以到http://download.csdn.Net/source/381727下載。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved