首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Drawing (GDI+) vs System.Windows.Media (WPF) vs Direct2D+DirectWrite+WIC

System.Drawing (GDI+) vs System.Windows.Media (WPF) vs Direct2D+DirectWrite+WIC
EN

Stack Overflow用户
提问于 2014-07-13 18:55:36
回答 1查看 3.3K关注 0票数 5

对于处理图像并将用C#编写的桌面C#应用程序,您建议使用以下哪种技术(或combinations_ ):System.Drawing (GDI+)与System.Windows.Media vs Direct2D+DirectWrite+WIC。图像处理将涉及到各种原始绘图、填充、文本处理、旋转、转换、缩放、直接使用指针处理像素数据。一般来说,上述技术在操作位图方面有多好?

此外,如果有人知道一个好的和详细的比较图表,列出了并行不同的特性和等价物,以及什么是不受支持的,那将是伟大的!例如,在WPF和ColorMatrix中是否存在对应的Direct2D?例如,在研究了SharpDX对Direct2D的实现之后,给我留下的印象是,尽管微软将其定位为GDI+的一个完全替代方案,但我无法在Direct2D中找到GDI+的所有功能。

此外,考虑到现在是2014年,你会说至少对于图像处理(如果不是UI部分,WPF似乎是一个更好的选择),GDI+在未来5年左右还可以吗?还是我真的应该考虑使用这三种技术中每种技术都是最有效的呢?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-07-13 19:13:39

我目前在一个可视化的C#/WPF项目中工作,并在Python中对图像处理进行了一些兴趣爱好的黑客攻击。

对于您的预期用途,我将使用以下方法:

  • 尽可能多地使用WPF名称空间,即System.Windows.Media。据我所知,System.Drawing和GDI+在一般情况下都使用非托管资源,这可能会造成不必要的、可以避免的问题;
  • 尽可能严格地使用MVVM架构。也就是说,您有一个仅用于显示信息的视图层,以及包含业务逻辑的模型层和ViewModel层。虽然有些人可能会说可视化的东西不属于ViewModel层,但是如果您的应用程序处理图像的操作,那么您的业务逻辑在定义上是与视图相关的(我花了很长时间才弄清楚这一点)。
  • 当有疑问时,使用多维数组(在Model/ViewModel中)执行图像处理,并将这些数组绑定到视图(通过DataBinding使用ValueConverter)。

例如,通过这种方式,可以有一个ImageLayerViewModel类来表示一个层,其中一个Data属性(或者ValuePixelArrayRaster )是一个double[height,width,depth]

我可以再详细说明一些,但我不确定是否能正确回答你的问题,所以如果你想写任何评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24726130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档