void draw_bird_tail(SKCanvas canvas, SKPoint body_one, SKColor pc, SKColor dc) { if (RandomUtility.CreateRandom() < tail_chance) { //stroke(*dc) //fill( *pc ) int var_width = RandomUtility.CreateRandom(15, 30); int var_x = RandomUtility.CreateRandom(-25, -15); int var_y = RandomUtility.CreateRandom(-50, -30); if (RandomUtility.CreateRandom() < 0.3) { var_y *= -1; } //beginShape() var path = new SKPath { FillType = SKPathFillType.EvenOdd }; path.MoveTo(body_one.X, body_one.Y); path.LineTo(body_one.X + var_width, body_one.Y); path.LineTo(body_one.X + var_width + var_x, body_one.Y + var_y); path.LineTo(body_one.X + var_x, body_one.Y + var_y); path.Close(); SkiaSharpUtility.PathStroke(canvas, paint, dc, path); SkiaSharpUtility.PathFill(canvas, paint, pc, path); //endShape(CLOSE) } }
SKPoint draw_bird_body(SKCanvas canvas, float x, float y, SKColor pc, SKColor bc, SKColor dc) { // stroke(*dc) float body_bottom = y - feet_length / 2.0f; SKPoint body_one = new SKPoint(x - feet_length * 2.0f, body_bottom); SKPoint body_two = new SKPoint(x + feet_length * 1.5f, body_bottom); SKPoint body_three = new SKPoint(x + feet_length * 2.1f, body_bottom - body_height); SKPoint body_four = new SKPoint(x, body_bottom - body_height * 1.3f); SKPoint left_midpoint = new SKPoint((body_four.X + body_one.X) / 2, (body_four.Y + body_one.Y) / 2); SKPoint top_midpoint = new SKPoint((body_four.X + body_three.X) / 2, (body_four.Y + body_three.Y) / 2); SKPoint right_midpoint = new SKPoint((body_two.X + body_three.X) / 2, (body_two.Y + body_three.Y) / 2); SKPoint bottom_midpoint = new SKPoint((body_one.X + body_two.X) / 2, (body_one.Y + body_two.Y) / 2); //SKPoint true_midpoint = new SKPoint( ( left_midpoint.X + right_midpoint.X ) / 2, ( left_midpoint.Y + right_midpoint.Y ) / 2 ); List <SKPoint> body_points = new List <SKPoint>() { body_one, body_three, body_four, left_midpoint, top_midpoint, bottom_midpoint }; //fill( *bc ) //beginShape() var pathBody = new SKPath { FillType = SKPathFillType.EvenOdd }; pathBody.MoveTo(body_one); pathBody.LineTo(body_two); pathBody.LineTo(body_three); pathBody.LineTo(body_four); pathBody.Close(); SkiaSharpUtility.PathStroke(canvas, paint, dc, pathBody); SkiaSharpUtility.PathFill(canvas, paint, bc, pathBody); //endShape(CLOSE) int range = RandomUtility.CreateRandom(1, 4); for (int i = 0; i < range; i++) { var point_one = RandomUtility.GetRandomElement(body_points); var point_two = RandomUtility.GetRandomElement(body_points); var point_three = RandomUtility.GetRandomElement(body_points); //var point_four = RandomUtility.GetRandomElement( body_points ); // fill(pc[0], pc[1], pc[2]) //beginShape() var path = new SKPath { FillType = SKPathFillType.EvenOdd }; path.MoveTo(point_one); path.LineTo(point_two); path.LineTo(point_three); path.Close(); SkiaSharpUtility.PathStroke(canvas, paint, dc, path); SkiaSharpUtility.PathFill(canvas, paint, pc, path); //endShape(CLOSE) if (RandomUtility.CreateRandom() < 0.5) { draw_lines(canvas, body_points, dc); } } // for head_x = x + feet_length; head_y = body_bottom - body_height * 1.1f; return(body_one); }