C# 点的双坐标最佳实践

C# 点的双坐标最佳实践,c#,wpf,double,point,C#,Wpf,Double,Point,有System.Drawing.Point,它接受int坐标参数X和Y的值。 这不是我需要的 然后是System.Windows.Point,它接受X和Y的double值。这是我需要的,但是我不确定这是否是我应该在类库项目中使用的结构 最后,我找到了System.Drawing.PointF,但它接受X和Y坐标参数的float值。我更喜欢使用double 最佳做法是什么 进一步澄清: 基本上,我有一个WPF项目和一个类库项目,作为UI的模型。我需要记住模型中的矩形坐标(double,double

System.Drawing.Point
,它接受
int
坐标参数
X
Y
的值。
这不是我需要的

然后是
System.Windows.Point
,它接受
X
Y
double
值。这是我需要的,但是我不确定这是否是我应该在类库项目中使用的结构

最后,我找到了
System.Drawing.PointF
,但它接受
X
Y
坐标参数的
float
值。我更喜欢使用
double

最佳做法是什么

进一步澄清:
基本上,我有一个WPF项目和一个类库项目,作为UI的模型。我需要记住模型中的矩形坐标(double,double)。

如果您不使用
System.Drawing
System.Windows
中的任何其他内容,请实现您自己的
PointD
,它使用双值。我在以前的一个项目中也这么做了。。。应该没什么大不了的。

如果您使用GDI+(在Windows窗体中大量使用的
System.Drawing
背后的本机API),您必须使用
System.Drawing.Point
System.Drawing.PointF
System.Windows.Point
仅在WPF中使用。因此没有“最佳实践”,这完全取决于您想要创建什么类型的应用程序


如果您需要一个与WPF或GDI+无关的点结构,请创建您自己的结构。

您打算在哪里使用它们?您提到的类之所以存在(可能),是因为它们对应于这些API所需的类型。如果你在做你自己的事情,你就不能定义你自己的事情吗?我的意图不是在有多个选择的时候定义一些事情。基本上,我有一个WPF项目和一个类库项目,作为UI的模型。我需要记住模型中的
Rectangle
坐标(
double,double)
。如果在模型中需要点类,则不需要从框架中依赖图形库。换句话说,它改进了解耦。如果你需要它与
PointF
Point
兼容,你可以让它继承那些具有合适的trunction/rounding逻辑的,因为它适合你的需要。@JeffBridgman来晚了,但我想指出的是,这些都是结构,不能被继承。虽然GDI+类型强制依赖GDI+库,
System.Drawing.dll
System.Windows.Point
的依赖性含义稍微弱一点:Microsoft将该类型放在
WindowsBase.dll
中,使您能够在不依赖WPF的情况下使用它(WPF位于
PresentationCore.dll
PresentationFramework.dll
),但我不确定你只使用WindowsBase.dll会做什么。。。我认为除了WPF之外,其他人都没有使用它。我更新了一点这个问题。我需要的是在我的类库模型项目中记住WPF项目中的
Rectangle
坐标。我在几个项目中使用了
WindowsBase.dll
,正是出于这个原因-我想要
Point
Rect
(包括一些相关的实用程序函数)。所有这些都是内部使用的,因此我们所采用的依赖关系并没有真正影响到其他任何人,但事实上,我们最终使用的是
WindowsBase
,而不是WPF。所以它可以而且确实发生了。