【发布时间】:2014-07-13 18:55:36
【问题描述】:
对于处理图像并用 C# 编写的 Desktop Vista+ 应用程序,您会推荐以下哪种技术(或组合_):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 种最有效的技术吗?
谢谢。
【问题讨论】:
-
Direct2D 中缺少 GDI+ 中的哪些功能?
-
GDI+ 不是图像处理,它只是 Win32 GDI 的封装,主要支持渲染 UI(不是图像)。所以功能相当有限。我认为你应该搜索一些 .NET 的图像库,使用这些库,你可以做任何你喜欢的操作(在图像上),比如执行一些复杂的变换,...... WPF 中的图形比 Winforms 中的要好得多,但是它也是面向用户界面的,而不是专注于图像。
-
@WaltRitscher Well 例如:HatchBrush、ColorMatrix、PathGradientBrush 等等。
-
@KingKing 对,但除了纯 GDI 的功能之外,它还有很多额外的功能。但你是对的,图像库将是一个很好的补充。但是有一些问题,例如,就图像/位图类型而言,最低公分母应该是什么 - 即由库提供的,Drawing.Bitmap,Media.Bitmap,WIC.Bitmap;还考虑到必须通过指针直接访问像素数据这一事实,并且应该可以廉价地将其转换为其他类型以利用 DirectText 等其他技术。有什么图书馆可以推荐的吗?
标签: .net wpf graphics gdi+ direct2d