protected override void OnDrawSample(SKCanvas canvas, int width, int height) { canvas.Clear(SKColors.White); var step = height / 4; using (var paint = new SKPaint()) using (var effect = SKPathEffect.CreateDash(new[] { 15f, 5f }, 0)) { paint.IsStroke = true; paint.StrokeWidth = 4; paint.PathEffect = effect; canvas.DrawLine(10, step, width - 10 - 10, step, paint); } using (var paint = new SKPaint()) using (var effect = SKPathEffect.CreateDiscrete(10, 10)) { paint.IsStroke = true; paint.StrokeWidth = 4; paint.PathEffect = effect; canvas.DrawLine(10, step * 2, width - 10 - 10, step * 2, paint); } using (var paint = new SKPaint()) using (var dashEffect = SKPathEffect.CreateDash(new[] { 15f, 5f }, 0)) using (var discreteEffect = SKPathEffect.CreateDiscrete(10, 10)) using (var effect = SKPathEffect.CreateCompose(dashEffect, discreteEffect)) { paint.IsStroke = true; paint.StrokeWidth = 4; paint.PathEffect = effect; canvas.DrawLine(10, step * 3, width - 10 - 10, step * 3, paint); } }
/// <inheritdoc /> public void DrawLine(Point point1, Point point2, IPaint paint) { using var skPaint = new SKPaint { Color = paint.Fill.ToSkColor(paint.Opacity), StrokeWidth = paint.StrokeThickness, IsAntialias = paint.IsAntialiased, IsStroke = Math.Abs(paint.StrokeThickness) > float.Epsilon }; if (paint.DashPattern != null) { var dashEffect = SKPathEffect.CreateDash(paint.DashPattern, 0); skPaint.PathEffect = skPaint.PathEffect != null ? SKPathEffect.CreateCompose(dashEffect, skPaint.PathEffect) : dashEffect; } Surface.Canvas.DrawLine(point1.ToSkPoint(), point2.ToSkPoint(), skPaint); }