我有一个小问题,我想创建一个缓慢移动到墙壁的标签,当撞到墙壁时,它应该返回到另一堵墙。我让标签向左移动,但过了一会儿它会穿过表单并消失,是否有可能在它碰到表单时使其向右转(另一个方向)?那么它从一堵墙到另一堵墙吗?
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Left = label1.Left + 10;
}
最佳答案
您必须知道可用宽度和标签文本的宽度,然后您可以创建一个条件,表示当 currentPosition + labelWidth >= availableWidth
时向相反方向移动。当然,屏幕左侧也会有另一个类似的情况。
我的建议:
private int velocity = 10;
private void timer1_Tick(object sender, EventArgs e)
{
if (currentWidth + labelWidth >= availableWidth)
{
//set velocity to move left
velocity = -10;
}
else if (currentWidth - labelWidth <= 0)
{
//set velocity to move right
velocity = 10;
}
label1.Left = label1.Left + velocity;
}
关于c# - 如何让标签撞到墙上时改变方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15156988/