You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SkiaSharp在圆形表面绘制垂直线?

在SkiaSharp圆形上绘制垂直线的实现方案

要在圆形表面绘制垂直线,核心是利用SkiaSharp的DrawLine方法,结合圆形的中心坐标与半径计算直线的起止点即可实现。以下是具体方案:

实现思路

  • 先明确圆形的中心坐标(示例中为画布中心:width/2, height/2)和半径(示例中为30)
  • 垂直线的起止点对应圆的顶部与底部:起点是(中心X, 中心Y - 半径),终点是(中心X, 中心Y + 半径)
  • 单独创建绘制直线的SKPaint对象,可自定义颜色、线宽等样式

修改后的完整代码

using System;
using SkiaSharp;

void Draw(SKCanvas canvas, int width, int height)
{
    // 定义圆形的核心参数
    float centerX = width / 2f;
    float centerY = height / 2f;
    float radius = 30f;

    // 绘制圆形边框
    var circleBorder = new SKPaint
    {
        IsAntialias = true,
        Style = SKPaintStyle.Stroke,
        Color = SKColors.Blue,
        StrokeWidth = 5
    };
    canvas.DrawCircle(centerX, centerY, radius, circleBorder);

    // 配置垂直线的绘制样式
    var verticalLinePaint = new SKPaint
    {
        IsAntialias = true,
        Style = SKPaintStyle.Stroke,
        Color = SKColors.Red, // 用红色区分直线,可自行修改
        StrokeWidth = 3
    };
    // 绘制穿过圆心的垂直线(从圆顶到圆底)
    float lineTopY = centerY - radius;
    float lineBottomY = centerY + radius;
    canvas.DrawLine(centerX, lineTopY, centerX, lineBottomY, verticalLinePaint);
}

额外拓展

如果需要绘制圆形边缘的竖直线(比如左侧或右侧边缘),只需调整直线的X坐标:

  • 左侧边缘竖线:X坐标设为centerX - radius,Y范围仍为centerY - radius到centerY + radius
  • 右侧边缘竖线:X坐标设为centerX + radius,Y范围同上
  • 还可以通过verticalLinePaint.PathEffect设置虚线等特殊效果

内容的提问来源于stack exchange,提问作者oknevermind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:51:02