我在以下行中收到此错误消息:
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指令或汇编参考?)
有什么问题?缺少哪个参考?
答案 0 :(得分:5)
很简单,这是对的。查看RectangleF
的文档。没有Center
属性。目前尚不清楚为什么你认为是一个。你可能会对另一种类型感到困惑吗?
当然,创建自己的方法来返回RectangleF
的中心很容易,你可以将其作为扩展方法:
public static PointF Center(RectangleF rectangle)
{
return new PointF(rectangle.X + rectangle.Width / 2,
rectangle.Y + rectangle.Height / 2);
}
目前尚不清楚为什么要尝试从Point
(int
- 基于)的值创建RectangleF
(float
- )。我可以想象这个:
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
不包含此类成员或方法或财产。
所以它确实不存在,你做错了就是尝试使用那些不存在的东西。