Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将System.Drawing.Icon转换为SkiaSharp.SKBitmap_C#_.net_Type Conversion_Icons_Skiasharp - Fatal编程技术网

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();