2011-11-10 93 views
3

我在我的應用程序中使用了映射。所以我有二維點結構的int和double,我需要操縱。我目前已將我的解決方案分爲兩個項目/程序集。一個具有核心功能。另一個是用戶界面。我目前正在使用WPF用戶界面。然而,我試圖最大限度地發揮核心程序集的功能,同時試圖確保它可以與任何C#用戶界面一起工作,例如, XNA是未來的API,例如Windows 8 Jupiter(Metro XAML)或Linux/Mac Windows Phone等。C中的哪個點,座標結構#

我希望在我的核心功能中操縱這些結構。我看到System.Windows和System.Drawing中有Point結構。不過,我不願意使用這些,因爲這些似乎與特定的Windows GUI API相關聯。我是否應該創建自己的結構,即使這將重新實現這些現有結構的大部分功能?我看到有一個數學課,但沒有數學名稱空間與有用的通用數學課程和結構。

3d點結構的情況是否一樣?

回答

3

不幸的是,框架中的當前Point(和Point3D)結構與特定平臺相關聯。

就個人而言,如果您不介意使用依賴項,我會使用PointSystem.Windows版本,因爲它是雙精度(對於映射很重要)並且相當輕量級。如果您決定需要Z值,還有一個Point3D

如果你不想承擔依賴關係,你將不得不推出自己的。

這就是說,在某些時候,如果您想支持其他平臺,您最終必須創建自己的轉換例程。 XNA的點結構都是單精度浮點,其中WPF是雙精度的,GDI +是混合的(有時是整數值)。因此,沒有單一的「正確」方式來管理「協調」 - 每個框架都有自己的規則和結構 - 所以無論您選擇什麼樣的轉換,轉換最終都會成爲一項要求。