2025-11-11
C#
00

SkiaSharp is a powerful cross-platform 2D graphics drawing library derived from Google's Skia graphics library. This article will explore in depth how to use SkiaSharp to draw various types of lines.

Basic Line Drawing

C#
override protected void OnPaint(PaintEventArgs e) { var info=new SKImageInfo(ClientSize.Width, ClientSize.Height); using (var surface = SKSurface.Create(info)) { var canvas = surface.Canvas; canvas.Clear(SKColors.White); // Create Paint object using (var paint = new SKPaint()) { // Set line color to blue paint.Color = SKColors.Blue; // Set line width paint.StrokeWidth = 5; // Set drawing mode to stroke paint.Style = SKPaintStyle.Stroke; // Draw a line from point (50, 50) to point (200, 200) canvas.DrawLine(50, 50, 200, 200, paint); } using(var view=new SKGLControl()) { // Generate snapshot image from the drawing surface var image = surface.Snapshot(); // Generate SKBitmap from image var bitmap = SKBitmap.FromImage(image); // Convert SKBitmap to GDI+ Bitmap and draw to Graphics object of PaintEventArgs e.Graphics.DrawImage(bitmap.ToBitmap(), 0, 0); } } }

image.png

2025-11-11
C#
00

SkiaSharp是一个强大的跨平台2D图形绘制库,源自Google的Skia图形库。本文将深入探讨如何使用SkiaSharp绘制各种类型的直线。

基本直线绘制

C#
override protected void OnPaint(PaintEventArgs e) { var info=new SKImageInfo(ClientSize.Width, ClientSize.Height); using (var surface = SKSurface.Create(info)) { var canvas = surface.Canvas; canvas.Clear(SKColors.White); // 创建画笔(Paint)对象 using (var paint = new SKPaint()) { // 设置线条颜色为蓝色 paint.Color = SKColors.Blue; // 设置线条宽度 paint.StrokeWidth = 5; // 设置绘制模式为描边 paint.Style = SKPaintStyle.Stroke; // 绘制从点(50, 50)到点(200, 200)的直线 canvas.DrawLine(50, 50, 200, 200, paint); } using(var view=new SKGLControl()) { // 从绘制的表面生成快照图像 var image = surface.Snapshot(); // 从图像生成 SKBitmap var bitmap = SKBitmap.FromImage(image); // 将 SKBitmap 转换为 GDI+ Bitmap,并绘制到 PaintEventArgs 的 Graphics 对象上 e.Graphics.DrawImage(bitmap.ToBitmap(), 0, 0); } } }

image.png

2025-11-10
C#
00

SkiaSharp 是一款跨平台的 2D 图形绘图库,广泛用于各种应用程序的图形渲染。为了高效地进行绘图,管理绘图上下文是一个非常重要的主题。本篇文章将详细介绍 SkiaSharp 中的绘图上下文管理,并通过例子加以说明。

什么是绘图上下文?

绘图上下文(SKCanvas)是 SkiaSharp 提供的一个核心类,用于执行实际的绘图操作。它负责处理所有的绘图命令,包括绘制形状、文本和图像等。每个绘制操作都需要通过一个 SKCanvas 实例来完成。

创建绘图上下文

我们可以通过多种方式创建 SKCanvas。最常见的方式是从一个位图(SKBitmap)或表面(SKSurface)创建。

示例代码

以下是一个使用 SKBitmap 创建绘图上下文的示例:

C#
protected override void OnPaint(PaintEventArgs e) { // 创建一个 SKImageInfo 对象,用于定义图像的宽度和高度 var info = new SKImageInfo(ClientSize.Width, ClientSize.Height); // 创建一个 SKSurface,用于绘制图形 using (var surface = SKSurface.Create(info)) { // 获取绘图上下文 var canvas = surface.Canvas; // 清空绘图上下文,设置背景颜色为白色 canvas.Clear(SKColors.White); // 创建一个 SKPaint 对象,用于定义绘制属性 using (var paint = new SKPaint()) { paint.Color = SKColors.Red; // 设置绘制颜色为红色 paint.StrokeWidth = 10; // 设置线宽为 10 像素 paint.IsAntialias = true; // 开启抗锯齿,提升绘图质量 // 在绘图上下文中绘制一条红色的线 canvas.DrawLine(100, 100, 700, 500, paint); } // 创建一个 SKControl 控件用于显示图像 using (var skImageView = new SKControl()) { // 从绘制的表面生成快照图像 var image = surface.Snapshot(); // 从图像生成 SKBitmap var bitmap = SKBitmap.FromImage(image); // 将 SKBitmap 转换为 GDI+ Bitmap,并绘制到 PaintEventArgs 的 Graphics 对象上 e.Graphics.DrawImage(bitmap.ToBitmap(), 0, 0); } } }
2025-11-10
C#
00

SkiaSharp 是一个跨平台的 2D 图形绘图库,允许开发者使用 C# 进行图形处理。理解 SkiaSharp 的坐标系统对于进行图形绘制非常重要。在本篇文章中,我们将详细介绍 SkiaSharp 的坐标系统,并通过实例来展示如何使用它。

坐标系统概述

在 SkiaSharp 中,坐标系统的原点 (0, 0) 位于画布的左上角。x 坐标向右增加,y 坐标向下增加。这意味着在绘制图形时,右侧和下侧的数值会增大,而左侧和上侧的数值会减小。

坐标系的维度

SkiaSharp 使用二维坐标系。对于复杂的图形操作,通常涉及以下几个关键概念:

  1. 坐标系原点:在绘图时,(0,0) 是坐标系的起点。
  2. 单位:坐标的单位是像素。
  3. 转换:可以使用变换功能如平移、旋转、缩放等来操作绘制对象。

绘制基本图形示例

接下来,我们将通过示例展示如何在 SkiaSharp 中操作坐标系统。

示例:绘制一个简单的矩形

以下是一个创建窗口并绘制一个矩形的示例代码:

C#
using SkiaSharp; using SkiaSharp.Views.Desktop; namespace AppCoordinate { public partial class Form1 : Form { public Form1() { InitializeComponent(); } override protected void OnPaint(PaintEventArgs e) { var info = new SKImageInfo(ClientSize.Width, ClientSize.Height); using (var surface = SKSurface.Create(info, new SKSurfaceProperties(SKPixelGeometry.RgbHorizontal))) { // 获取 SKCanvas SKCanvas canvas = surface.Canvas; // 清除背景 canvas.Clear(SKColors.White); // 创建画笔 var paint = new SKPaint(); paint.Color = SKColors.Blue; paint.Style = SKPaintStyle.Fill; paint.StrokeWidth = 5; // 定义矩形的位置和大小 var rect = new SKRect(50, 50, 200, 200);// x1, y1, x2, y2 canvas.DrawRect(rect, paint); // 将 SKSurface 渲染到 Windows 窗体 using (var skImageView = new SKControl()) { var image = surface.Snapshot(); var bitmap = SKBitmap.FromImage(image); e.Graphics.DrawImage(bitmap.ToBitmap(), 0, 0); } } } } }

image.png

2025-11-10
C#
00

SKPaint 是 SkiaSharp 中用于描述绘制样式和颜色的类。它包含了许多属性,可以控制绘制的外观,包括颜色、样式、字体、抗锯齿等。本文将详细介绍 SKPaint 的主要属性,并通过示例来演示其用法。

SKPaint 概述

在 SkiaSharp 中,SKPaint 是绘制图形、文本和图像时的核心类。通过设置 SKPaint 的属性,开发者可以控制绘制的颜色、样式、线宽、字体等。

SKPaint 的创建

首先,我们需要创建一个 SKPaint 实例。以下是创建 SKPaint 的基本步骤:

C#
using SkiaSharp; // 创建 SKPaint 实例 using var paint = new SKPaint();

SKPaint 的主要属性

Color 属性

Color 属性用于设置绘制的颜色。可以使用 SKColors 类中的常量来指定颜色。

C#
paint.Color = SKColors.Blue; // 设置颜色为蓝色

Style 属性

Style 属性用于设置绘制的样式。可以选择填充(SKPaintStyle.Fill)或描边(SKPaintStyle.Stroke)。

C#
paint.Style = SKPaintStyle.Fill; // 设置为填充样式