Example #1
0
    /// <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;
    }
Example #2
0
        /// <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;
        }