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

在C#控制台应用中无法使用System.Drawing的问题求助

问题原因
  1. .NET 5及以上版本(.NET Core系列)中,System.Drawing不再是框架内置程序集,而是以NuGet包的形式提供。你尝试添加的COM引用是.NET Framework时代System.Drawing导出的类型库,这类CLR程序集导出的COM类型库无法在.NET Core/.NET 5+中重新导入,因此触发MSB3290警告。
  2. .NET 5+项目结构已简化,原“引用”目录合并为“依赖项”,程序集引用不再通过传统的“程序集”选项添加,而是通过NuGet包管理器安装。
解决方案

正确的做法是安装官方的System.Drawing.Common NuGet包,步骤如下:

  • 右键项目下的“依赖项” → 选择“管理NuGet程序包”
  • 在“浏览”标签页搜索System.Drawing.Common,选择与项目框架版本匹配的包(比如.NET 6对应6.x版本),点击“安装”

安装完成后,即可正常使用System.Drawing相关类实现位图导出,示例代码:

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

namespace BitmapExporter
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建指定尺寸的位图
            using (var bitmap = new Bitmap(300, 200))
            using (var graphics = Graphics.FromImage(bitmap))
            {
                // 执行计算并绘制内容(示例:绘制文本)
                graphics.Clear(Color.LightBlue);
                var font = new Font("Segoe UI", 14);
                graphics.DrawString("计算完成,导出位图", font, Brushes.DarkBlue, new PointF(20, 80));
                
                // 导出为PNG格式
                bitmap.Save("calculation_result.png", ImageFormat.Png);
            }
        }
    }
}
替代方案

如果项目需要跨平台运行(非Windows环境),或者想避免System.Drawing.Common的兼容性限制,可选用以下现代图形库:

1. SkiaSharp

谷歌Skia图形引擎的.NET绑定,完全跨平台(Windows/macOS/Linux/移动端),支持所有常见位图操作。使用前需安装SkiaSharp NuGet包,示例代码:

using SkiaSharp;

namespace SkiaBitmapExporter
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var bitmap = new SKBitmap(300, 200))
            using (var canvas = new SKCanvas(bitmap))
            {
                // 绘制内容
                canvas.Clear(SKColors.LightBlue);
                using (var paint = new SKPaint { Color = SKColors.DarkBlue, TextSize = 14 })
                {
                    canvas.DrawText("计算完成,导出位图", 20, 100, paint);
                }
                
                // 导出为PNG
                using (var stream = new SKFileWStream("skia_result.png"))
                {
                    bitmap.Encode(stream, SKEncodedImageFormat.Png, 100);
                }
            }
        }
    }
}

2. ImageSharp

纯.NET编写的跨平台图形处理库,API设计更现代化,无原生依赖。使用前需安装SixLabors.ImageSharp NuGet包,示例代码:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.Processing;
using SixLabors.Fonts;

namespace ImageSharpExporter
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var image = new Image<Rgba32>(300, 200))
            {
                // 绘制内容
                image.Mutate(ctx =>
                {
                    ctx.Clear(Color.LightBlue);
                    var font = SystemFonts.CreateFont("Segoe UI", 14);
                    ctx.DrawText("计算完成,导出位图", font, Color.DarkBlue, new PointF(20, 80));
                });
                
                // 导出为PNG
                image.Save("imagesharp_result.png");
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:46:16