ApeForms | C#-WinForm窗体仿Android桌面(左右翻页)
作者:互联网
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下载
标签:pageIndex,翻页,ctrl,C#,ApeForms,Size,size 来源: https://www.cnblogs.com/landriesnidis/p/16317295.html