using SkiaSharp;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace FirstSolver;
/// <summary>
/// SkiaSharp功能扩展类
/// </summary>
public static class SkiaSharpExtensions
{
/// <summary>
/// SKImage转换为ImageSource
/// </summary>
/// <param name="image">要转换的Skia图像</param>
/// <returns>转换后的WPF图像</returns>
public static ImageSource ToImageSource(this SKImage image)
{
WriteableBitmap bmp = new(image.Width, image.Height, 96, 96, PixelFormats.Bgra32, null);
bmp.Lock();
try
{
SKImageInfo info = new(image.Width, image.Height, SKColorType.Bgra8888, SKAlphaType.Premul);
using SKSurface surface = SKSurface.Create(info, bmp.BackBuffer, bmp.BackBufferStride);
SKCanvas canvas = surface.Canvas;
canvas.DrawImage(image, 0, 0);
canvas.Flush();
bmp.AddDirtyRect(new Int32Rect(0, 0, image.Width, image.Height));
}
finally
{
bmp.Unlock();
}
bmp.Freeze();
return bmp;
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。