本文主要是介绍SkiaSharp:.NET强大而灵活的跨平台图形库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在.Net 6之前,我们一般是使用System.Drawing.Common来生成图像。
但在.Net 6平台需要配置,才能在非Windows平台使用System.Drawing.Common。而从.Net 7开始,非Windows不再允许使用,官方也给我们推荐了几个替代库。
今天我们一起来了解下,免费开源图像库:SkiaSharp。
01
项目简介
SkiaSharp是基于Google的Skia图形库的.NET封装,是一个用于2D图像绘制的开源库,无论桌面应用程序、移动应用还是Web应用,都可以使用。
.Net开发人员可以利用这个强大而灵活的跨平台图形库,来实现高质量的图形绘制和渲染。
02
项目特性
**1、跨平台:**支持多种操作系统,包括Windows、macOS、iOS、Android以及其他.NET Core兼容的平台。
**2、高性能:**支持硬件加速技术,提供高效的图形渲染能力,都可以保证在任何平台应用流畅的用户体验;
**3、易用性:**提供了直观的API,使得开发人员可以轻松地在.NET应用程序中绘制各种形状、文本和图像。此外还提供了WPF和WinForms的控件,简化开发难度与工作量。
**4、丰富的图形功能:**除了提供基本的绘图操作,还提供很多复杂的图形效果,如阴影、渐变和纹理。
5、支持多种文本渲染:无论是矢量字体还是位图字体,都提供了强大的文本渲染能力。
**6、社区活跃:**在Github已收获3.9K的Star。
03
使用示例
1、安装依赖库
2、验证码示例代码
using SkiaSharp;//图片宽度
var width = 90;
//图片高度
var height = 30;
//生成随机验证码
var code = CreateValidateCode(4);// 创建一个SkiaSharp画布
using (var surface = SKSurface.Create(new SKImageInfo(width, height)))
{var canvas = surface.Canvas;// 清除画布 canvas.Clear(SKColors.White);// 使用SkiaSharp绘制验证码文本 using (var textPaint = new SKPaint()){textPaint.Color = SKColors.Black;textPaint.IsAntialias = true;textPaint.TextSize = height * 0.8f; // 设置文本大小 textPaint.StrokeWidth = 3;var textBounds = new SKRect();textPaint.MeasureText(code, ref textBounds);var xText = (width - textBounds.Width) / 2;var yText = (height - textBounds.Height) / 2 - textBounds.Top;canvas.DrawText(code, xText, yText, textPaint);}// 绘制干扰线 using (var linePaint = new SKPaint()){// 半透明黑色 linePaint.Color = new SKColor(0, 0, 0, 128);linePaint.StrokeWidth = 1;linePaint.IsAntialias = true;var random = new Random();for (int i = 0; i < 5; i++) // 绘制5条干扰线 {float x1 = 0;float y1 = random.Next(height);float x2 = width;float y2 = random.Next(height);canvas.DrawLine(x1, y1, x2, y2, linePaint);}}// 保存图像到文件 using (var image = surface.Snapshot())using (var data = image.Encode()){File.WriteAllBytes("code.png", data.ToArray());}
}/// <summary>
/// 随机生成验证码
/// </summary>
/// <param name="len"></param>
/// <returns></returns>
string CreateValidateCode(int len)
{// 可选字符集 const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";// 创建一个新的随机数生成器 Random random = new Random();// 生成验证码 string code = new string(Enumerable.Repeat(chars, len).Select(s => s[random.Next(s.Length)]).ToArray());return code;
}
3、效果
04
项目地址
https://github.com/mono/SkiaSharp
该开源库,我在 知识星球 的框架教程中也有运用,使用示例如下:
- End -
这篇关于SkiaSharp:.NET强大而灵活的跨平台图形库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!