将 System.Drawing.Icon 转换为 SkiaSharp.SKBitmap
Convert System.Drawing.Icon to 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();
我需要获取可执行文件的图标 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();