Exemple #1
0
        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)
            }
        }
Exemple #2
0
        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);
        }