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下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现