C#中的哪个点,坐标结构

时间:2011-11-10 18:00:16

标签: c#

我在我的应用程序中使用映射。所以我有int和double的2D点结构,我需要操作它。我目前已将我的解决方案分成2个项目/程序集。一个具有核心功能。另一种是用户界面。我目前正在使用WPF用户界面。但是,我试图最大化核心程序集的功能,同时努力确保它可以与任何C#用户界面一起使用,例如表单,XNA是未来的API,如Windows 8 Jupiter(Metro XAML)或Linux / Mac Windows Phone等。

我希望在我的核心功能中操纵这些结构。我看到System.Windows和System.Drawing中有Point结构。但是我不愿意使用这些,因为这些似乎与特定的Windows GUI API相关联。我应该制作自己的结构,即使这将重新实现这些现有结构的大部分功能吗?我看到有一个数学类,但没有数学名称空间,有有用的通用数学类和结构。

3d点结构的情况是否相同?

1 个答案:

答案 0 :(得分:3)

不幸的是,是的 - 框架中的当前Point(和Point3D)结构与特定平台相关联。

就个人而言,如果您不介意使用依赖项,我会使用System.Windows版本的Point,因为它是双精度(对于映射很重要)而且非常轻量级。如果您确定需要Z值,还有一个Point3D

如果你不想接受依赖,那么你必须自己动手。

话虽如此,在某些时候,如果你想支持其他平台,你最终还是必须创建自己的转换例程。 XNA的点结构都是单精度浮点数,其中WPF是双精度,而GDI +是混合的(有时是整数值)。因此,没有一种“正确”的方式来管理“坐标” - 每个框架都有自己的规则和结构 - 所以无论你选择什么,转换最终都是必需的。