You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Drawing.Common与System.Drawing的差异及安装后功能未显的技术问询

关于System.Drawing.Common与传统System.Drawing的说明

二者的关系

  • 传统System.Drawing是.NET Framework的内置组件,仅支持Windows平台。
  • System.Drawing.Common是它在.NET Core/.NET 5+生态下的迁移适配版本,本质是同一绘图API的跨平台迭代版,并非完全独立的新组件。

为何作为独立NuGet包存在

-.NET Core/.NET 5+采用模块化设计,不再像.NET Framework那样把所有基础库打包进框架,而是让开发者按需安装NuGet包,以此减少应用体积、提升轻量化程度。

  • 原System.Drawing依赖Windows平台的GDI+,System.Drawing.Common在保留原有API的基础上,对Linux、macOS等非Windows平台做了适配(依赖第三方libgdiplus库),作为独立包可以更灵活地更新跨平台兼容逻辑、修复Bug。

独有特性(相比.NET Framework的System.Drawing)

  • 跨平台支持:可在Linux、macOS环境下正常运行绘图逻辑,传统System.Drawing仅能在Windows上工作。
  • 适配.NET新版性能特性:比如支持Span<T>、Memory<T>等高性能内存类型,优化了大数据量绘图操作的内存效率。
  • 跟进.NET新版安全标准:修复了.NET Framework版本中的部分安全漏洞,适配了新版框架的权限控制逻辑。

仅System.Drawing.Common能实现的功能示例

比如在Linux服务器后端生成图片并保存:

using System.Drawing;
using System.Drawing.Imaging;

// 需提前在Linux环境安装libgdiplus依赖
using var bitmap = new Bitmap(200, 200);
using var graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White);
graphics.DrawString("跨平台绘图测试", new Font("Arial", 12), Brushes.Black, new PointF(10, 10));
bitmap.Save("/tmp/test.png", ImageFormat.Png);

这段代码在.NET Framework的System.Drawing中无法在Linux上执行,而System.Drawing.Common配合libgdiplus可以正常完成图片生成与保存。

另外,在.NET 6+的ASP.NET Core应用中,System.Drawing.Common可直接在后端生成验证码、图片缩略图等资源,无需依赖Windows服务器环境。

内容的提问来源于stack exchange,提问作者kurmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:33:15