c#System.Windows.Rect struct Width和Height

时间:2017-04-29 20:02:47

标签: c#

如果我这样做:

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?

3 个答案:

答案 0 :(得分:2)

因为位置基于零。第3个参数定义宽度(以像素为单位),在本例中为10个像素。因此,它从零开始,长度为10像素,这意味着最右边的位置为9.同样的原则也适用于高度,这解释了底部。

答案 1 :(得分:1)

修改 实际上,Rect也可以按预期工作,我在Visual Studio 2017中尝试过:

enter image description here

您使用的是其他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);

enter image description here

答案 2 :(得分:0)

这是因为坐标系从零开始从(0, 0)开始。

因此,宽度为10的矩形的起点为0,如果计算出10个单位,则最右边的坐标为9。

0, 1, 2, 3, 4, 5, 6, 7, 8, 9