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()를 두번 그려야 할 것 같습니다.
댓글 없음:
댓글 쓰기