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

.NET 6项目中不使用System.Drawing.Common,如何通过SkiaSharp获取水平分辨率?

用SkiaSharp替代System.Drawing.Common获取水平分辨率

嘿,刚好我之前处理过类似的需求,完全可以用SkiaSharp实现你要的功能,而且适配.NET 6毫无问题,具体步骤如下:

第一步:安装SkiaSharp NuGet包

首先确保你的.NET 6项目已经引入了SkiaSharp,用.NET CLI或者NuGet包管理器都可以:

dotnet add package SkiaSharp

第二步:编写替代代码

原来用System.Drawing.Common的逻辑是创建一个空Bitmap然后读取它的水平分辨率,对应到SkiaSharp里,我们可以通过SKImageInfo或者SKBitmap的相关属性来实现,代码非常直观:

// 方式1:通过SKImageInfo直接获取默认水平分辨率
var imageInfo = new SKImageInfo(1, 1);
float horizontalResolution = imageInfo.DpiX;

// 方式2:创建SKBitmap后从其Info属性读取(和你原来的代码逻辑更贴近)
using var bitmap = new SKBitmap(1, 1);
float horizontalResolutionFromBitmap = bitmap.Info.DpiX;

关键说明

  • SkiaSharp里的DpiX属性完全对应System.Drawing的HorizontalResolution,默认值就是系统的默认DPI(通常是96,若系统开启高DPI缩放则会对应实际设置值)。
  • 别忘了用using语句包裹SKBitmap,和System.Drawing的Bitmap一样,它实现了IDisposable,需要手动释放资源避免内存泄漏。
  • 如果你的需求是获取当前显示设备的实际物理DPI(而非默认值),那可能需要结合平台特定的API,但如果只是替代你原来的代码逻辑,上面的示例就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 13:59:06