0% found this document useful (0 votes)
81 views4 pages

Fill A Polygon

This document provides a recipe for filling a polygon on a Canvas in Android. It describes creating a Path object to define the polygon, setting the paint style to fill, and using the path and paint to draw the filled polygon on the Canvas. Key steps include moving to the starting point, lining to subsequent points to define the polygon shape, setting the paint color and fill style, and calling DrawPath to render the filled polygon on the given Canvas. The example code provided encapsulates these steps to subclass a View and override its OnDraw method to fill the sample polygon.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views4 pages

Fill A Polygon

This document provides a recipe for filling a polygon on a Canvas in Android. It describes creating a Path object to define the polygon, setting the paint style to fill, and using the path and paint to draw the filled polygon on the Canvas. Key steps include moving to the starting point, lining to subsequent points to define the polygon shape, setting the paint color and fill style, and calling DrawPath to render the filled polygon on the given Canvas. The example code provided encapsulates these steps to subclass a View and override its OnDraw method to fill the sample polygon.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

FILL A POLYGON

This recipe shows


Android.Graphics.Path

one way of drawing a and Android.Graphics.Canvas.

filled

polygon

using

Sam ple Code: [FillAPolygon.zip] Related Google Docum entation: Canvas Paint Path

Recipe
The Canvas class in Android can be used to perform specialized drawing of graphics. A canvas provides a context that holds the various drawing calls. To draw on a Canvas, three things are required: A Paint object that describes the colours and styles being drawn

A drawing primitive such as a Rect, Path, or a Bitmap to that describes what is being drawn. A bitmap or a view to hold the pixels that will be drawn. The following class provides an example of how to draw a polygon and fill it. A Path object is instantiated. The Path is initiated with a call to .MoveTo this sets the starting location of the Path. Then corresponding calls to the .LineTo method are made. For example, consider the following collection of points:
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) };

The example assembles a Path object that holds the primitives that make up the polygon, as shown in the following snippet:
var path = new Path(); // Set the first point, that the drawing will start from. 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); }

The next step is to describe the paint for the polygon:


var paint = new Paint { Color = Color.White }; // We can use Paint.Style.Stroke if we want to draw a "hollow" polygon, // But then we had better set the .StrokeWidth property on the paint. paint.SetStyle(Paint.Style.Fill);

Finally, the path and the paint are used in together to draw the polygon on a Canvas:
canvas.DrawPath(path, paint);

For this example, the above snippets have been encapsulate in a class called FilledPolygon, which is a subclass of a View:
public class FilledPolygon : 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 FilledPolygon(Context context) : base(context) { } protected override void OnDraw(Canvas canvas) { base.OnDraw(canvas); var path = new Path(); path.MoveTo(_points[0].X, _points[0].Y); for (var i = 1; i < _points.Length; i++) { path.LineTo(_points[i].X, _points[i].Y); } var paint = new Paint { Color = Color.White }; // We can use Paint.Style.Stroke if we want to draw a "hollow" polygon, // But then we had better set the .StrokeWidth property on the paint. paint.SetStyle(Paint.Style.Fill);

canvas.DrawPath(path, paint); } }

In this case, when the view is render, the OnDraw method will be invoked, and the hosting activity will pass in a canvas instance. When the application is run it will look like:

You might also like