ApeForms | C#-WinForm窗體仿Android桌面(左右翻頁)
阿新 • • 發佈:2022-05-27
ApeForms系列③ 擴充套件功能使用技巧——平滑運動實現仿Android桌面翻頁
@
目錄前言
本文將講解如何利用ApeForms擴充套件方法使控制元件平滑運動,並以此實現一個仿Android桌面翻頁的效果。
實現方法
引用擴充套件庫
在專案中通過NuGet引用ApeForms庫,具體步驟請見文章——《WinForm窗體UI美化庫(Metro扁平風格)演示與安裝》
平滑運動
使用ApeForms擴充套件庫可以實現一行程式碼使控制元件平滑運動,呼叫方法如下:
控制元件物件.LocationGradualChange(目標位置, 移動速率);
移動速率取值為1~255之間,值越小運動越快,相反值越大越平滑緩慢。
原始碼
using System; using System.Drawing; using System.Windows.Forms; namespace Demo.ApeForms.Lesson2 { public partial class AndroidForm : Form { private Control[] pages; private int pageIndex; private byte rate = 5; // 翻頁速率 1~20 public AndroidForm() { InitializeComponent(); datePicker1.Year = 2022; pages = new Control[] { tlpPage1, tlpPage2, tlpPage3 }; PageTurning(0); } /// <summary> /// 翻頁 /// </summary> /// <param name="pageIndex">頁碼</param> public void PageTurning(int pageIndex) { this.pageIndex = pageIndex; for (int i = 0; i < pages.Length; i++) { var ctrl = pages[i]; Point point; if (i == pageIndex) { var size = Size - ctrl.Size; point = new Point(size.Width/2,(size.Height - alignCenterBox1.Height) / 2); ctrl.LocationGradualChange(point); } else if(i < pageIndex) { var size = Size - ctrl.Size - alignCenterBox1.Size; point = new Point(-ctrl.Width, size.Height/2); } else { var size = Size - ctrl.Size - alignCenterBox1.Size; point = new Point(Width, size.Height / 2); } ctrl.LocationGradualChange(point, rate); } } private void btnFunc_Click(object sender, EventArgs e) { if(sender == btnLeft) { pageIndex = pageIndex > 0 ? pageIndex - 1 : pages.Length - 1; } else if (sender == btnRight) { pageIndex++; } else { pageIndex = 0; } PageTurning(pageIndex % pages.Length); } } }
原始碼下載
專案原始碼已上傳到CSDN下載