SkiaSharp 是一个强大的 2D 图形库,可以用来绘制各种图形。本文将详细介绍如何使用 SkiaSharp 在 WinForms 应用程序中绘制圆形和椭圆。
首先需要通过 NuGet 包管理器安装 SkiaSharp 相关包:
在 SkiaSharp 中:
SKCanvas.DrawCircle() 方法绘制圆形SKCanvas.DrawOval() 方法绘制椭圆SKPaint 类设置绘制样式(颜色、线宽等)C#using SkiaSharp;
using SkiaSharp.Views.Desktop;
using System;
using System.Windows.Forms;
namespace SkiaSharpDemo
{
public partial class Form1 : Form
{
private SKControl skControl;
public Form1()
{
InitializeComponent();
InitializeSkiaSharp();
}
private void InitializeSkiaSharp()
{
// 创建 SKControl 控件
skControl = new SKControl();
skControl.Dock = DockStyle.Fill;
skControl.PaintSurface += OnPaintSurface;
this.Controls.Add(skControl);
}
private void OnPaintSurface(object sender, SKPaintSurfaceEventArgs e)
{
// 获取绘图画布
SKCanvas canvas = e.Surface.Canvas;
// 清空画布(使用白色背景)
canvas.Clear(SKColors.White);
// 创建画笔
using (SKPaint paint = new SKPaint())
{
// 设置基本属性
paint.IsAntialias = true; // 启用抗锯齿
// 1. 绘制实心红色圆形
paint.Style = SKPaintStyle.Fill;
paint.Color = SKColors.Red;
canvas.DrawCircle(100, 100, 50, paint);
// 2. 绘制蓝色圆形边框
paint.Style = SKPaintStyle.Stroke;
paint.Color = SKColors.Blue;
paint.StrokeWidth = 3;
canvas.DrawCircle(250, 100, 50, paint);
// 3. 绘制带渐变的圆形
using (SKPaint gradientPaint = new SKPaint())
{
gradientPaint.IsAntialias = true;
var shader = SKShader.CreateRadialGradient(
new SKPoint(400, 100),
50,
new SKColor[] { SKColors.Yellow, SKColors.Red },
null,
SKShaderTileMode.Clamp);
gradientPaint.Shader = shader;
canvas.DrawCircle(400, 100, 50, gradientPaint);
}
// 4. 绘制实心绿色椭圆
paint.Style = SKPaintStyle.Fill;
paint.Color = SKColors.Green;
paint.Shader = null;
canvas.DrawOval(new SKRect(50, 200, 150, 300), paint);
// 5. 绘制紫色椭圆边框
paint.Style = SKPaintStyle.Stroke;
paint.Color = SKColors.Purple;
paint.StrokeWidth = 2;
canvas.DrawOval(new SKRect(200, 200, 300, 250), paint);
// 6. 绘制虚线椭圆
paint.Style = SKPaintStyle.Stroke;
paint.Color = SKColors.Orange;
paint.StrokeWidth = 2;
paint.PathEffect = SKPathEffect.CreateDash(new float[] { 10, 5 }, 0);
canvas.DrawOval(new SKRect(350, 200, 450, 300), paint);
}
}
}
}

SKPaint 对象后进行释放SKControl.Invalidate() 方法可以触发重绘SkiaSharp 提供了灵活且强大的图形绘制功能。通过合理使用 DrawCircle 和 DrawOval 方法,配合 SKPaint 的各种属性,可以绘制出各种样式的圆形和椭圆。在实际应用中,可以根据需求组合这些基本功能,创建更复杂的图形效果。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!