-2

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

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

'System.Drawing.RectangleF' 不包含'Center' 的定义,并且找不到接受'System.Drawing.RectangleF' 类型的第一个参数的扩展方法'Center'(您是否缺少 using 指令或程序集引用?)

怎么了?缺少哪个参考?

4

2 回答 2

6

很简单,没错。查看RectangleF. 没有Center财产。不清楚你为什么认为有一个。也许你对另一种类型感到困惑?

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

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

目前尚不清楚为什么您要尝试从 ( -based) 中的值创建( -based Point) 。我可以想象这个:intRectangleFfloat

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类型以明确说明您在逻辑上谈论的是两点之间的区别,而不是新点。

于 2013-04-11T22:25:57.037 回答
2

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

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

RectangleF不包含此类成员、方法或属性。

所以它实际上不存在,你做错的是试图使用不存在的东西。

于 2013-04-11T22:25:59.010 回答