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); }