跑马灯效果方法

#region 跑马灯效果方法
/// <summary>
/// 文字进入左侧后从右侧出来
/// </summary>
private void LabelRun()
{
	if ((lbMsg.Location.X + lbMsg.Width) > 0)
	{
		lbMsg.Left = lbMsg.Left - 5;
	}
	else//设置文字初始位置
	{
		lbMsg.Left = pBox.Width;
	}
}

bool flag = true;//标记文字滚动防线  true--往左  false--往右
/// <summary>
/// 文字在容器内来回碰撞
/// </summary>
private void LabelRunEx()
{
	if (flag)
	{
		if (lbMsg.Left > 0)//判断文字开端是否碰撞到了容器左侧边缘
		{
			lbMsg.Left = lbMsg.Left - 5;
			if (lbMsg.Left <= 0)
			{
				flag = false;
			}
		}
	}
	else
	{
		lbMsg.Left = lbMsg.Left + 5;
		if (lbMsg.Left >= pBox.Width - lbMsg.Width)//判断文字末尾是否碰撞到了容器右侧边缘
		{
			flag = true;
		}
	}
}
#endregion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

方法调用

#region 跑马灯线程
	new Thread(() =>
	{
		while (true)
		{
			try
			{
				LabelRunEx();
			}
			catch { }
			Thread.Sleep(100);
		}
	})
	{ IsBackground = true }.Start();
#endregion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16