2013-04-11 24 views
-2

我得到以下行此错误消息的定义:“System.Drawing.RectangleF”不包含“中心”

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

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

什么是错误?缺少哪些参考?

回答

5

很简单,它是正确的。看看RectangleF的文档。没有Center属性。目前还不清楚你为什么认为之一。也许你会对另一种类型感到困惑吗?

。当然,这是很容易创建自己的方法返回一个RectangleF的中心,你能有这样的扩展方法:

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

目前尚不清楚为什么你想创建一个(int-based)from RectangleFfloat-based-based)的值。我能想象这样的:

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)吗? – Sayse

+1

@Sayse /具有比+更高的优先权... –

+1

@Sayse它是“BODMAS”..除以前的部分:) –