带有 system.drawing 和可能的替代方案的 WIndows 通用应用程序

Posted

技术标签:

【中文标题】带有 system.drawing 和可能的替代方案的 WIndows 通用应用程序【英文标题】:WIndows universal app with system.drawing and possible alternative 【发布时间】:2015-07-21 17:07:19 【问题描述】:

我正在开发一个 Windows 通用应用程序,我需要使用 Bitemap,但是

我似乎无法引用 System.Drawing,

为什么 windows 通用应用程序不能引用这个 dll,我有什么替代方案?

编辑 关于如何在通用应用程序中使用我已经编写的过滤库(取决于 system.drawing)的任何建议?

Tnx

【问题讨论】:

您必须停止尝试,您不能在通用应用程序中使用该命名空间。它不是通用的。请改用 Windows.UI.Xaml.Media.Imaging 命名空间。 你想用它做什么?替代方案取决于您的目标。 @Passant tnx alt;我正在构建一个图像过滤应用程序。为此我需要操作 Bitmap 对象 - 仍然支持吗? 我已经编辑了我的问题 - 请回复一个答案,以便我标记它 【参考方案1】:

System.Drawing 是使用 GDI+ 的 .NET 命名空间。此技术不适用于 Windows 应用商店应用程序或通用 Windows 应用程序。见.NET for Windows apps。

您可以将Win2D 项目用于 WinRT 包装器,该包装器可从 C# 用于使用 Direct2D/DirectWrite 进行绘图,Windows Store 应用程序和 UWP 也支持这些包装器。 见Introducing Win2D: GPU accelerated 2D graphics programming in the Windows Runtime。

您可以使用SharpDX,它为 Direct2D、DirectWrite 和 Windows 映像组件 (WIC) 提供包装器。

简而言之:您不能在通用 Windows 应用程序中使用利用 System.Drawing 的现有库。

【讨论】:

Tnx,虽然很遗憾.. 有什么办法可以解决吗? 重写库以使用受支持的东西。 这些例子似乎只是展示了画布的使用。我只需要编辑内存中的文件,无需向用户显示:/.【参考方案2】:

Cross platform System.Drawing

这可能无法直接解决问题。该项目使 System.Drawing 可用于 Linux 和 Mac osX10。支持 UWP 平台有助于在将代码从 WinForm 移植/测试到 UWP 时过渡到 Windows.UI。

【讨论】:

以上是关于带有 system.drawing 和可能的替代方案的 WIndows 通用应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何从 System.Drawing.Color 转换为 System.Windows.Media.Color?

如何将十六进制#FFFFFF 转换为 System.Drawing.Color [重复]

Mono 是不是支持 System.Drawing 和 System.Drawing.Printing? [关闭]

.NET Core 和 System.Drawing

OS X 上的 Unity 和 System.Drawing

System.Drawing.Brush 来自 System.Drawing.Color