void draw_wings(SKCanvas canvas, List <SKPoint> wing, bool upper_wing = false)
        {
            List <SKBlendMode> modes = new List <SKBlendMode>()
            {
                SKBlendMode.ColorBurn, SKBlendMode.Multiply, SKBlendMode.Difference, SKBlendMode.Darken
            };
            SKBlendMode style = RandomUtility.GetRandomElement <SKBlendMode>(modes);
            //canvas.ResetMatrix();
            int canvasCacheTag = canvas.Save();

            if (upper_wing)
            {
                canvas.Scale(1, -1);
            }

            paint.BlendMode = style;
            //draw_curve_filled( wing )
            SkiaSharpUtility.DrawSplineCurve(canvas, paint, wing, true, SKPathFillType.Winding);

            paint.BlendMode = SKBlendMode.Multiply;// BLEND
            canvas.Scale(-1, 1);

            paint.BlendMode = style;
            // draw_curve_filled(wing)
            SkiaSharpUtility.DrawSplineCurve(canvas, paint, wing, true, SKPathFillType.Winding);

            paint.BlendMode = SKBlendMode.Multiply;// BLEND
            //canvas.ResetMatrix();
            canvas.RestoreToCount(canvasCacheTag);
        }
 void draw_curve_filled(SKCanvas canvas, List <SKPoint> points)
 {
     if (points == null)
     {
         return;
     }
     SkiaSharpUtility.DrawSplineCurve(canvas, paint, points, false, SKPathFillType.Winding);
 }
 void draw_16_points(SKCanvas canvas, List <SKPoint> points)
 {
     if (points == null || points.Count == 0)
     {
         return;
     }
     //var blendModeCache = paint.BlendMode;
     //paint.BlendMode = SKBlendMode.DstOver;
     SkiaSharpUtility.DrawSplineCurve(canvas, paint, points, true, SKPathFillType.EvenOdd);
     //SkiaSharpUtility.DrawPoints( canvas, paint, points );
     //paint.BlendMode = blendModeCache;
 }
        void drawAntennae(SKCanvas canvas, List <SKPoint> body, List <SKPoint> antennae)
        {
            List <SKPoint> points = new List <SKPoint>();

            points.Add(body[2]);
            //points.Add( body[2] );
            for (int i = 0; i < antennae.Count; i++)
            {
                var a = antennae[i];
                //curveTightness(curve_tightness[i])
                //curveVertex(x, y)
                points.Add(a);
            }
            SkiaSharpUtility.DrawSplineCurve(canvas, paint, points, false, SKPathFillType.EvenOdd);
        }