如何使用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
相关产品推荐
相关产品推荐

