2016년 11월 21일 월요일

Tip - 채워진 폴리곤 그리기

속이 채워진 폴리곤을 그리는 방법입니다.


    public class ViewPort : View
    {
        private readonly PointF[] _points = new[]
                                                {
                                            new PointF(100, 100),
                                            new PointF(200, 200),
                                            new PointF(200, 500),
                                            new PointF(600, 600),
                                            new PointF(400, 200),
                                            new PointF(100, 100)
                                        };
        public ViewPort(Context context) : base(context)
        {
        }

        protected override void OnDraw(Canvas canvas)
        {
            var path = new Path();

            // path 객체에 폴리곤 그리기
            path.MoveTo(_points[0].X, _points[0].Y);
            for (var i = 1; i < _points.Length; i++)
            {
                // Draw a line from the previous point in the path to the new point.
                path.LineTo(_points[i].X, _points[i].Y);
            }

            // path 객체 캔버스에 그리기
            var brush = new Paint
            {
                Color = Color.Blue
            };
            brush.SetStyle(Paint.Style.Fill);   // 속 채움
            canvas.DrawPath(path, brush);

            var border = new Paint
            {
                Color = Color.Green
            };
            border.SetStyle(Paint.Style.Stroke);    // 테두리
            canvas.DrawPath(path, border);
        }
    }

Paint.Style.FillAndStroke란 스타일도 있긴 한데, 테두리가 있고 속이 채워진 다각형이 그려지지 않더군요. 테두리와 속을 같은 색으로 그리는지는 몰라도...
아무튼 테두리와 안쪽색을 구분하기 위해서는 위와같이 canvas.DrawPath()를 두번 그려야 할 것 같습니다.

댓글 없음:

댓글 쓰기