0

大家好,我已经搜索了答案,但我没有找到对我有帮助的特定答案。所以我在问这个问题。

我的问题是你如何检测你的图片框是否移动到窗口或表单之外。

我的计时器的每个滴答声都会:

picturebox.Left += 10;
if (picturebox.Left > this.Width)
{
    picturebox.Left = 0;
}

但是这段代码只出现在右侧,并且只检测图片框是否在表单的右侧消失。

我试过做一些事情,比如让我将图片框向左移动,它走出了屏幕,这是我得到的代码,这没有给出任何错误,但它会如此快速地移动我的图像。

picturebox.Left -= 10;
if (picturebox.Left > this.width || picturebox.Left < this.Width)
{
    picturebox.Left = 0;
}

这段代码对我也不起作用:

picturebox.Right < this.Width  

请帮忙,谢谢

4

2 回答 2

0

这是一种方法...

    private int direction = -1;

    private void button1_Click(object sender, EventArgs e)
    {
        direction = direction * -1;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        picturebox.Left += direction * 10;

        if (!this.ClientRectangle.IntersectsWith(picturebox.Bounds))
        {
            if (direction == -1)
                picturebox.Left = this.ClientRectangle.Width;
            else
                picturebox.Left = -picturebox.Width;
        }
    }
于 2013-10-28T12:52:56.897 回答
0

尝试这个。

private bool IsControlInsideClientArea(Control c)
{
    return this.ClientRectangle.Contains(this.RectangleToClient(c.RectangleToScreen(c.ClientRectangle)));
}
于 2013-10-28T13:10:45.803 回答