加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – System.Drawing(GDI)vs System.Windows.Media(WPF)vs Di

发布时间:2020-12-14 02:46:40 所属栏目:Windows 来源:网络整理
导读:对于处理图像并将用C#编写的Desktop Vista应用程序,您会推荐以下哪种技术(或者您推荐的组合:System.Drawing(GDI)vs System. Windows.Media vs Direct2D DirectWrite WIC.图像处理将涉及各种原始绘图,填充,使用文本,旋转,平移,缩放,直接使用指针处理像素数据
对于处理图像并将用C#编写的Desktop Vista应用程序,您会推荐以下哪种技术(或者您推荐的组合:System.Drawing(GDI)vs System. Windows.Media vs Direct2D DirectWrite WIC.图像处理将涉及各种原始绘图,填充,使用文本,旋转,平移,缩放,直接使用指针处理像素数据.一般来说,上述技术在操作位图方面有多好?

此外,如果有人知道一个好的和详细的比较图表,列出了并排的不同功能和等价物,以及不支持的,这将是伟大的!例如,WPF和Direct2D中是否存在ColorMatrix等价物?例如,在研究了SharpDX对Direct2D的实现后,我留下的印象是即使微软将其定位为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相关(我花了很长时间才弄明白这一点).
>如有疑问,请使用多维数组(在Model / ViewModel中)执行图像处理,并将这些数组绑定到View(使用ValueConverter通过DataBinding).

这样,例如,您可以使用ImageLayerViewModel类来表示Layer,其中Data属性(或Value或PixelArray或Raster,无论如何)是double [height,width,depth].

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读