如何解决将System.Drawing.Icon转换为SkiaSharp.SKBitmap
我需要将可执行文件的图标获取为SKBitmap
我已经知道如何获取可执行文件的图标,但是我一直在寻找一种将System.Drawing.Icon
转换为SkiaSharp.SKBitmap
的方法,我正在研究的项目使用该方法来应用进一步的处理。我知道Icon.toBitmap()
会给我一个System.Drawing.Bitmap
,但我也不能转换它。
Icon icon = Icon.ExtractAssociatedIcon(/*Path to FooBar.exe*/);
SKBitmap skbm = /* what goes here ? */;
解决方法
using System.Drawing;
using SkiaSharp;
/.../
Icon icon = Icon.ExtractAssociatedIcon(applicationPath);
SKBitmap skBitmap = icon.ToSKBitmap();
/... or (original answer) .../
Icon icon = Icon.ExtractAssociatedIcon(applicationPath);
SKBitmap skBitmap = icon.ToBitmap().ToSKBitmap();
/.../
namespace Vurdalakov
{
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using SkiaSharp;
public static class BitmapExtensions
{
public static SKBitmap ToSKBitmap(this Bitmap bitmap)
{
using (var stream = new MemoryStream())
{
bitmap.Save(stream,ImageFormat.Png);
stream.Seek(0,SeekOrigin.Begin);
return SKBitmap.Decode(stream);
}
}
public static SKBitmap ToSKBitmap(this Icon icon)
{
using (var stream = new MemoryStream())
{
icon.Save(stream);
stream.Seek(0,SeekOrigin.Begin);
return SKBitmap.Decode(stream);
}
}
}
}
,
以下解决了问题
using MemoryStream mem = new MemoryStream();
Icon.ExtractAssociatedIcon(ProgramLocation).Save(mem);
mem.Seek(0,SeekOrigin.Begin);
SKBitmap skbm = SKBitmap.Decode(mem);
mem.Close();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。