/// <inheritdoc cref="IPaint{TDrawingContext}.InitializeTask(TDrawingContext)" /> public override void InitializeTask(SkiaSharpDrawingContext drawingContext) { skiaPaint ??= new SKPaint(); var size = GetDrawRectangleSize(drawingContext); var center = new SKPoint(size.Location.X + _center.X * size.Width, size.Location.Y + _center.Y * size.Height); var r = size.Location.X + size.Width > size.Location.Y + size.Height ? size.Location.Y + size.Height : size.Location.X + size.Width; r *= _radius; skiaPaint.Shader = SKShader.CreateRadialGradient( center, r, _gradientStops, _colorPos, _tileMode); skiaPaint.IsAntialias = IsAntialias; skiaPaint.IsStroke = true; skiaPaint.StrokeWidth = StrokeThickness; skiaPaint.StrokeCap = StrokeCap; skiaPaint.StrokeJoin = StrokeJoin; skiaPaint.StrokeMiter = StrokeMiter; skiaPaint.Style = IsStroke ? SKPaintStyle.Stroke : SKPaintStyle.Fill; if (FontFamily != null) { skiaPaint.Typeface = GetTypeFaceFromFontFamily(); } if (PathEffect is not null) { PathEffect.CreateEffect(drawingContext); skiaPaint.PathEffect = PathEffect.SKPathEffect; } if (ImageFilter is not null) { ImageFilter.CreateFilter(drawingContext); skiaPaint.ImageFilter = ImageFilter.SKImageFilter; } var clip = GetClipRectangle(drawingContext.MotionCanvas); if (clip != LvcRectangle.Empty) { _ = drawingContext.Canvas.Save(); drawingContext.Canvas.ClipRect(new SKRect(clip.X, clip.Y, clip.X + clip.Width, clip.Y + clip.Height)); _drawingContext = drawingContext; } drawingContext.Paint = skiaPaint; drawingContext.PaintTask = this; }
/// <inheritdoc cref="IPaint{TDrawingContext}.InitializeTask(TDrawingContext)" /> public override void InitializeTask(SkiaSharpDrawingContext drawingContext) { skiaPaint ??= new SKPaint(); skiaPaint.Color = Color; skiaPaint.IsAntialias = IsAntialias; skiaPaint.IsStroke = IsStroke; skiaPaint.StrokeCap = StrokeCap; skiaPaint.StrokeJoin = StrokeJoin; skiaPaint.StrokeMiter = StrokeMiter; skiaPaint.StrokeWidth = StrokeThickness; skiaPaint.Style = IsStroke ? SKPaintStyle.Stroke : SKPaintStyle.Fill; if (FontFamily != null) { skiaPaint.Typeface = GetTypeFaceFromFontFamily(); } if (PathEffect is not null) { PathEffect.CreateEffect(drawingContext); skiaPaint.PathEffect = PathEffect.SKPathEffect; } if (ImageFilter is not null) { ImageFilter.CreateFilter(drawingContext); skiaPaint.ImageFilter = ImageFilter.SKImageFilter; } var clip = GetClipRectangle(drawingContext.MotionCanvas); if (clip != LvcRectangle.Empty) { _ = drawingContext.Canvas.Save(); drawingContext.Canvas.ClipRect(new SKRect(clip.X, clip.Y, clip.X + clip.Width, clip.Y + clip.Height)); _drawingContext = drawingContext; } drawingContext.Paint = skiaPaint; drawingContext.PaintTask = this; }