2

私は小さな問題を抱えています.壁にゆっくりと移動し、壁にぶつかると他の壁に戻るラベルを作成したいと考えています. ラベルを左に向けたのですが、しばらくするとフォームを通り抜けて消えてしまいますが、フォームに当たったときに右(別の方向)に曲がるようにすることはできますか?それで、それは壁から壁へと行きますか?

    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;
    }
4

2 に答える 2

1

使用可能な幅とラベル テキストの幅を把握しておく必要があります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;

}
于 2013-03-01T11:48:39.670 に答える
1
Sounds like homework to me... just in case it isn't:

private int direction = 1;
private int speed = 10;

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    direction = 1;
    timer1.Enabled = true;

}

private void timer1_Tick(object sender, EventArgs e)
{
    if( label1.Left + label1.Width > this.Width && direction == 1 ){
        direction = -1;
    }
    if( label1.Left <= 0 && direction == -1 ){
        direction = 1;
    }
    label1.Left = label1.Left + (direction * speed);
}
于 2013-03-01T11:54:20.390 に答える