'System.Drawing.RectangleF'不包含'Center'的定义

时间:2013-04-11 22:23:58

标签: c# xna

我在以下行中收到此错误消息:

Point posDiff = new Point(RectF1.Center.X - RectF2.Center.X, RectF1.Center.Y - RectF2.Center.Y);

'System.Drawing.RectangleF'不包含'Center'的定义,也没有扩展方法'Center'接受类型'System.Drawing.RectangleF'的第一个参数(你是否缺少using指令或汇编参考?)

有什么问题?缺少哪个参考?

2 个答案:

答案 0 :(得分:5)

很简单,这是对的。查看RectangleF的文档。没有Center属性。目前尚不清楚为什么你认为一个。你可能会对另一种类型感到困惑吗?

当然,创建自己的方法来返回RectangleF的中心很容易,你可以将其作为扩展方法:

public static PointF Center(RectangleF rectangle)
{
    return new PointF(rectangle.X + rectangle.Width / 2,
                      rectangle.Y + rectangle.Height / 2);
}

目前尚不清楚为什么要尝试从Pointint - 基于)的值创建RectangleFfloat - )。我可以想象这个:

PointF center1 = RectF1.Center(); // Using the new extension method
PointF center2 = RectF2.Center();
PointF posDiff = new PointF(center1.X - center2.X, center1.Y - center2.Y);

...虽然我很想创建一个VectorF类型,以明确你在逻辑上谈论两点之间的区别,而不是新点。

答案 1 :(得分:2)

在MSDN网站上可以清楚地看到:

http://msdn.microsoft.com/en-us/library/system.drawing.rectanglef.aspx

RectangleF不包含此类成员或方法或财产。

所以它确实不存在,你做错了就是尝试使用那些不存在的东西。