[英]c# - Get Rectangle of Form
我正在用C#制作汽车动画,并想测试汽车是否仍在Window中。 我使用Windows窗体设计器创建了一个窗体。
我有一个长方形的车:
public Rectangle CarShape { get; set; }
...
CarShape = new Rectangle(Pos, new Size(28, 62));
而我的Form1课:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Startcars();
}
//Here is my Question:
public static Rectangle Window { get; } = new Rectangle(new Point(0,0),Form1.Size);
...
}
在这里,我得到一个错误:“非静态字段,方法或属性'Form.Size'需要一个对象引用”。
我也用'this'尝试过,它在静态属性中似乎也是无效的。 如果我将Property更改为非静态,则在当前上下文中此无效。
稍后,我将使用if(!Window.Contains(car.CarShape))
进行检查if(!Window.Contains(car.CarShape))
我如何才能将Window设置为矩形,或者是否有更好的方法来测试汽车是否仍在窗口内?
问题必须是尝试在定义中初始化变量。 做这个:
1-将变量声明为:
public Rectangle win { get; }
2-然后在表单的构造函数中:
public Form1()
{
InitializeComponent();
Startcars();
win = new Rectangle(new Point(0, 0), this.Size);
}
正如@Lithium在评论中所说,您不应将Window
命名为变量,因为它可能会造成混淆。 遵循C#中的命名约定始终是一个好主意
编辑
您还应该使用this.ClientRectangle而不是this.Size
(感谢Reza Aghaei指出这一点。
Form的Size
属性不是静态的,因此您不能使用返回Form的Size
属性的静态属性。
一种更简单的方法是使用ClientRectangle属性,如下所示:
if (ClientRectangle.Contains(CarShape))
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.