ApeForms | C#-WinForm窗体仿Android桌面(左右翻页)

  • ApeForms | C#-WinForm窗体仿Android桌面(左右翻页)已关闭评论
  • 22 次浏览
  • A+
所属分类:.NET技术
摘要

@本文将讲解如何利用ApeForms扩展方法使控件平滑运动,并以此实现一个仿Android桌面翻页的效果。


ApeForms系列③ 扩展功能使用技巧——平滑运动实现仿Android桌面翻页

@

前言

本文将讲解如何利用ApeForms扩展方法使控件平滑运动,并以此实现一个仿Android桌面翻页的效果。
ApeForms | C#-WinForm窗体仿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下载

前往下载 https://download.csdn.net/download/lgj123xj/85463277