C# 将System.Drawing.Icon转换为SkiaSharp.SKBitmap
我需要将可执行文件的图标设置为C# 将System.Drawing.Icon转换为SkiaSharp.SKBitmap,c#,.net,type-conversion,icons,skiasharp,C#,.net,Type Conversion,Icons,Skiasharp,我需要将可执行文件的图标设置为SKBitmap 我已经知道如何获取可执行文件的图标,但我一直在寻找将System.Drawing.Icon转换为SkiaSharp.SKBitmap的方法,我正在处理的项目使用该方法应用进一步的处理。我知道Icon.toBitmap()给了我一个系统.Drawing.Bitmap,但我也不能转换它 Icon icon = Icon.ExtractAssociatedIcon(/*Path to FooBar.exe*/); SKBitmap skb
SKBitmap
我已经知道如何获取可执行文件的图标,但我一直在寻找将System.Drawing.Icon
转换为SkiaSharp.SKBitmap
的方法,我正在处理的项目使用该方法应用进一步的处理。我知道Icon.toBitmap()
给了我一个系统.Drawing.Bitmap
,但我也不能转换它
Icon icon = Icon.ExtractAssociatedIcon(/*Path to FooBar.exe*/);
SKBitmap skbm = /* what goes here ? */;
下面的代码解决了这个问题
using MemoryStream mem = new MemoryStream();
Icon.ExtractAssociatedIcon(ProgramLocation).Save(mem);
mem.Seek(0, SeekOrigin.Begin);
SKBitmap skbm = SKBitmap.Decode(mem);
mem.Close();
nvm,我自己解决。位图没有ToSKBitmapTrue,我忘了添加我使用的扩展方法。我还添加了一个新的扩展方法(基于您的解决方案),可以直接将图标转换为位图。
using MemoryStream mem = new MemoryStream();
Icon.ExtractAssociatedIcon(ProgramLocation).Save(mem);
mem.Seek(0, SeekOrigin.Begin);
SKBitmap skbm = SKBitmap.Decode(mem);
mem.Close();