如果我这样做:
Rect rc = new Rect(0, 0, 10, 5);
我在位置0,0处创建一个矩形,宽度为10,高度为5。
因此rc.Width
为10,rc.Height
为5。
但是rc.Right
为何而不是10而rc.Bottom
是5而不是4?
答案 0 :(得分:2)
因为位置基于零。第3个参数定义宽度(以像素为单位),在本例中为10个像素。因此,它从零开始,长度为10像素,这意味着最右边的位置为9.同样的原则也适用于高度,这解释了底部。
答案 1 :(得分:1)
修改强> 实际上,Rect也可以按预期工作,我在Visual Studio 2017中尝试过:
您使用的是其他Rect
吗?下面是用于计算Bottom的反编译代码:
/// <summary>
/// Bottom Property - This is a read-only alias for Y + Height
/// If this is the empty rectangle, the value will be negative infinity.
/// </summary>
public double Bottom
{
get
{
if (IsEmpty)
{
return Double.NegativeInfinity;
}
return _y + _height; //notice it's just top + height, no magic
}
}
旧答案 - 使用Rectangle。它按预期工作:
Rectangle rc = new Rectangle(0, 0, 10, 5);
答案 2 :(得分:0)
这是因为坐标系从零开始从(0, 0)
开始。
因此,宽度为10的矩形的起点为0,如果计算出10个单位,则最右边的坐标为9。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9