使用兩個 Timer 控制視窗水平往返移動:
timer1:向右移動 (X + 1),到達右邊界啟動 timer2timer2:向左移動 (X - 1),到達左邊界啟動 timer1public partial class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e)
{
this.DesktopLocation = new Point(0, 240); // 初始位置
}
private void timer1_Tick(object sender, EventArgs e) // 向右
{
Point p = new Point(this.DesktopLocation.X + 1, this.DesktopLocation.Y);
this.DesktopLocation = p;
if (p.X == 630) // 右邊界
{
timer1.Enabled = false;
timer2.Enabled = true;
}
}
private void timer2_Tick(object sender, EventArgs e) // 向左
{
Point p = new Point(this.DesktopLocation.X - 1, this.DesktopLocation.Y);
this.DesktopLocation = p;
if (p.X == 20) // 左邊界
{
timer1.Enabled = true;
timer2.Enabled = false;
}
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Stop();
timer2.Stop();
}
}
| 移動模式 | 實作方式 |
|---|---|
| 垂直上下 | 修改 Y 座標,雙 Timer 控制 |
| 對角線 | 同步修改 X、Y |
| 隨機飄動 | 隨機產生方向向量,碰壁反彈 |
| 圓形軌跡 | 三角函數計算 X = R·cos(θ), Y = R·sin(θ) |
Timer.Interval = 10-20ms 可獲得較平滑動畫DesktopLocation 會觸發重繪,複雜視窗可能閃爍DoubleBuffered = true 減少閃爍Animation 或 WinForms AnimateWindow API