Example #1
0
        void drawPloygon4()
        {
            var canvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
                                                 this._meshPool);

            var paint = new Paint {
                color  = new Color(0xFFFF0000),
                shader = Gradient.linear(new Offset(80, 80), new Offset(180, 180), new List <Color>()
                {
                    Colors.red, Colors.black, Colors.green
                }, null, TileMode.clamp)
            };

            var path = new Path();

            path.moveTo(10, 150);
            path.lineTo(10, 160);
            path.lineTo(140, 120);
            path.lineTo(110, 180);
            path.winding(PathWinding.clockwise);
            path.close();
            path.addRect(Unity.UIWidgets.ui.Rect.fromLTWH(0, 100, 100, 100));
            path.addRect(Unity.UIWidgets.ui.Rect.fromLTWH(200, 0, 100, 100));
            path.addRRect(RRect.fromRectAndRadius(Unity.UIWidgets.ui.Rect.fromLTWH(150, 100, 30, 30), 10));
            path.addOval(Unity.UIWidgets.ui.Rect.fromLTWH(150, 50, 100, 100));
            path.winding(PathWinding.clockwise);

            if (Event.current.type == EventType.MouseDown)
            {
                var pos = new Offset(
                    Event.current.mousePosition.x,
                    Event.current.mousePosition.y
                    );

                Debug.Log(pos + ": " + path.contains(pos));
            }

            canvas.drawPath(path, paint);

            canvas.rotate(Mathf.PI * 15 / 180);

            canvas.translate(100, 100);

            paint.shader = Gradient.radial(new Offset(80, 80), 100, new List <Color>()
            {
                Colors.red, Colors.black, Colors.green
            }, null, TileMode.clamp);
            canvas.drawPath(path, paint);


            canvas.translate(100, 100);
            paint.shader = Gradient.sweep(new Offset(120, 100), new List <Color>()
            {
                Colors.red, Colors.black, Colors.green, Colors.red,
            }, null, TileMode.clamp, 10 * Mathf.PI / 180, 135 * Mathf.PI / 180);
            canvas.drawPath(path, paint);


            canvas.translate(100, 100);
            //paint.maskFilter = MaskFilter.blur(BlurStyle.normal, 5);
            paint.shader = new ImageShader(new Image(texture6, true), TileMode.mirror);
            canvas.drawPath(path, paint);

            canvas.flush();
        }
        public override void paint(Canvas canvas, Size size)
        {
            var paint = new Paint()
            {
                color = new Color(0xFFFF0000),
            };

            paint.color       = Colors.yellow;
            paint.style       = PaintingStyle.stroke;
            paint.strokeWidth = 3;

            var startPoint    = new Offset(0, size.height / 6);
            var controlPoint1 = new Offset(size.width / 4, 0);
            var controlPoint2 = new Offset(3 * size.width / 4, 0);
            var endPoint      = new Offset(size.width, size.height / 6);

            var path = new Path();

            path.moveTo(startPoint.dx, startPoint.dy);
            path.cubicTo(
                controlPoint1.dx, controlPoint1.dy,
                controlPoint2.dx, controlPoint2.dy,
                endPoint.dx, endPoint.dy
                );

            path.moveTo(10, 10);
            path.lineTo(90, 10);
            path.lineTo(10, 90);
            path.lineTo(90, 90);
            path.winding(PathWinding.clockwise);
            path.close();

            path.moveTo(110, 10);
            path.lineTo(190, 10);
            path.lineTo(110, 90);
            path.lineTo(190, 90);
            path.close();

            path.addRect(UIWidgetRect.fromLTWH(10, 25, 180, 50));

            path.addRect(UIWidgetRect.fromLTWH(200, 0, 100, 100));
            path.addRRect(RRect.fromRectAndRadius(UIWidgetRect.fromLTWH(225, 25, 50, 50), 10));
            path.winding(PathWinding.clockwise);
            path.addOval(UIWidgetRect.fromLTWH(200, 50, 100, 100));
            path.winding(PathWinding.clockwise);


            canvas.drawPath(path, paint);

            paint = new Paint {
                color  = new Color(0xFFFF0000),
                shader = Gradient.linear(
                    new Offset(0, 0),
                    new Offset(size.width, 200),
                    new List <Color>()
                {
                    Colors.red, Colors.black, Colors.green
                }, null, TileMode.clamp),
            };
            canvas.translate(0, 200);
            canvas.drawPath(path, paint);

            canvas.translate(0, 200);
            // paint.maskFilter = MaskFilter.blur(BlurStyle.normal, 5);
            paint.shader = new ImageShader(new Image(texture6, true), TileMode.mirror);
            canvas.drawPath(path, paint);

            canvas.translate(0, 200);
            paint = new Paint {
                color  = new Color(0xFF00FF00),
                shader = Gradient.sweep(
                    new Offset(size.width / 2, 100),
                    new List <Color>()
                {
                    Colors.red, Colors.black, Colors.green, Colors.red,
                }, null, TileMode.clamp, 0 * Mathf.PI / 180, 360 * Mathf.PI / 180),
            };
            canvas.drawPath(path, paint);


            paint.shader = Gradient.radial(
                new Offset(size.width / 2, 100), 200f,
                new List <Color>()
            {
                Colors.red, Colors.black, Colors.green
            }, null, TileMode.clamp);
            canvas.translate(0, 200);
            canvas.drawPath(path, paint);
        }