gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:43:35 43 4
gpt4 key购买 nike

对于处理图像的桌面 Vista+ 应用程序,并且将用 C# 编写,您会推荐以下哪种技术(或组合_:System.Drawing (GDI+) vs System.Windows.Media vs Direct2D+DirectWrite+WIC。图像处理将涉及各种原始绘图、填充、处理文本、旋转、平移、缩放、直接使用指针处理像素数据。总的来说,上述技术在处理位图方面效果如何?

此外,如果有人知道一个详细的比较图表,其中列出了并排的不同功能和等价物,以及不支持的内容,那就太好了!例如,WPF 和 Direct2D 中是否有 ColorMatrix 等价物?例如,在调查了 SharpDX 的 Direct2D 实现之后,我的印象是,即使 Microsoft 将其定位为 GDI+ 的完全替代品,我也无法在 Direct2D 中找到所有 GDI+ 的功能。

另外,考虑到现在是 2014 年,您是否会说至少对于图像处理(如果不是 UI 部分,WPF 似乎是一个更好的选择),GDI+ 在接下来的 5 年左右会好吗?或者我真的应该考虑使用所有 3 种最有效的技术吗?

谢谢你。

最佳答案

我目前在一个视觉密集型 C#/WPF 项目中工作,并且在 Python 中对图像处理进行了一些业余爱好。

根据您的预期用途,我将使用以下方法:

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

  • 这样,例如,您可以拥有 ImageLayerViewModel表示层的类,带有 Data属性(或 ValuePixelArrayRaster 等)是 double[height,width,depth] .

    我可以详细说明,但我不确定是否能正确回答您的问题,所以如果您愿意,请写下任何评论。

    关于.net - System.Drawing (GDI+) vs System.Windows.Media (WPF) vs Direct2D+DirectWrite+WIC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726130/

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