c# - 如何让标签撞到墙上时改变方向?

标签 c#

我有一个小问题,我想创建一个缓慢移动到墙壁的标签,当撞到墙壁时,它应该返回到另一堵墙。我让标签向左移动,但过了一会儿它会穿过表单并消失,是否有可能在它碰到表单时使其向右转(另一个方向)?那么它从一堵墙到另一堵墙吗?

    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/

相关文章:

c# - 需要解雇员工的能力

c# - 在 WPF 控件 C# 中嵌入 Google map

c# - 使用存储库模式进行查询

c# - 使用 NetworkStream.BeginRead 和 NetworkStream.EndRead 实现超时

c# - c#中带变量的动态对象

c# - 不为空时处理 ConcurrentStack?

c# - 在 .NET 线程中花费了多少时间?

c# - 在 Visual C# 中播放声音

c# - asp.net mvc razor 中的可点击单选按钮文本

c# - Ef 核心字符串不包含排除空值