好吧,如果float
是足夠的精度,那麼你可以使用PointF
struct:
var point = new PointF(3.5f, 7.9f);
如果你真的需要,你可以定義自己的PointD
結構:
public struct PointD {
public double X;
public double Y;
public PointD(double x, double y) {
X = x;
Y = y;
}
public Point ToPoint() {
return new Point((int)X, (int)Y);
}
public override bool Equals(object obj) {
return obj is PointD && this == (PointD)obj;
}
public override int GetHashCode() {
return X.GetHashCode()^Y.GetHashCode();
}
public static bool operator ==(PointD a, PointD b) {
return a.X == b.X && a.Y == b.Y;
}
public static bool operator !=(PointD a, PointD b) {
return !(a == b);
}
}
平等代碼最初從here。
ToPoint()
方法可讓您將其轉換爲Point
對象,但當然精度會被截斷。
是的,先生是多麼愚蠢的是,didnt檢查的PointF! – 2011-03-20 04:07:30
請參閱http://stackoverflow.com/a/5221407/380384以瞭解結構的正確'GetHashCode()'。 – ja72 2014-09-16 23:10:25