ApeForms系列③ 擴展功能使用技巧——平滑運動實作仿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下載
前往下載 https://download.csdn.net/download/lgj123xj/85463277
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481991.html
標籤:.NET技术
上一篇:ApeForms | WinForm表單UI美化庫(Metro扁平風格)演示與安裝
下一篇:返回列表