Пример #1
0
        protected internal void ClipRoundRect(SKRoundRect roundRect, IGradientMask mask, DrawContext context)
        {
            using var canvasLock = new CanvasLock(context.Canvas);

            LayoutBounds(mask, roundRect.Rect, context, false);
            context.Canvas.ClipRoundRect(roundRect, mask.ClipMode.ToSkOperation(), true);
        }
        public void Clip(IPathMask mask, DrawContext context)
        {
            if (!mask.IsActive || string.IsNullOrEmpty(mask.Data))
            {
                return;
            }

            using var path = SKPath.ParseSvgPathData(mask.Data);
            path.GetTightBounds(out var bounds);

            using var canvasLock = new CanvasLock(context.Canvas);
            LayoutBounds(mask, bounds, context, true);
            context.Canvas.ClipPath(path, mask.ClipMode.ToSkOperation());
        }
        public void Clip(ITextMask mask, DrawContext context)
        {
            if (!mask.IsActive || string.IsNullOrEmpty(mask.Text))
            {
                return;
            }

            using var textPaint = GetTextPaint(mask, context);
            using var textPath  = textPaint.GetTextPath(mask.Text, 0, 0);
            textPath.GetTightBounds(out var bounds);

            using var canvasLock = new CanvasLock(context.Canvas);
            LayoutBounds(mask, bounds, context, true);
            context.Canvas.ClipPath(textPath, mask.ClipMode.ToSkOperation());
        }