gpt4 book ai didi

c# - 由于 System.Windows.Point/System.Drawing.PointF 差异,在 WPF/Silverlight 和 GDI+ 之间共享库时出现问题

转载 作者:太空狗 更新时间:2023-10-30 00:44:48 25 4
gpt4 key购买 nike

在我目前正在做的项目中 http://sourcecodecloud.codeplex.com/我有一个包含非平凡几何和布局算法的库。它们完全独立于图形引擎。

该应用程序最初是为 GDI+ 编写的,现在我要实现它的 Silverlight 和/或 WPF 端口。问题是我的所有算法都使用 System.Drawing.PointFSizeFRectangleF 结构。它们都是基于 float 的。对应的 WPF/Silverlight 类是 double

问题是,有人有这方面的经验吗?什么是最好的方法?

  1. 为 Size、Point、Rectangle 等创建自己的包装器,可以包装这两种变体。
  2. 坚持使用 System.Drawing 或 System.Windows 并将其转换为另一个。负面影响是对“外星人”集会的不必要引用。
  3. 还有其他魔法吗?

最佳答案

一种可能适用的方法是使用 namespace 别名。您使用别名而不是实际类型,并使用编译器指令在它们之间切换。由于命名空间别名是针对每个文件的,因此如果代码分布在大量文件中,则可能不适合。

#if GDI
using Point=System.Drawing.Point;
#else
using Point=System.Windows.Point;
#endif

如果您使用 var,您可以消除很多检查、转换并保持性能。您仍然需要查看接受和返回特定类型的函数,例如 Math.Sin 等。

关于c# - 由于 System.Windows.Point/System.Drawing.PointF 差异,在 WPF/Silverlight 和 GDI+ 之间共享库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6962114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com