Refine search
private Path getPathForSegment(float startAngle, float sweep) { Point center = new Point(getWidth() / 2, getHeight() / 2); RectF rect = new RectF(0f, 0f, getWidth(), getHeight()); Path selection = new Path(); selection.addArc(rect, startAngle, sweep); selection.lineTo(center.x, center.y); selection.close(); return selection; }
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(android.graphics.Color.BLACK); canvas.drawPaint(paint); paint.setStrokeWidth(4); paint.setColor(android.graphics.Color.RED); paint.setStyle(Paint.Style.FILL_AND_STROKE); paint.setAntiAlias(true); Point a = new Point(0, 0); Point b = new Point(0, 100); Point c = new Point(87, 50); Path path = new Path(); path.setFillType(FillType.EVEN_ODD); path.lineTo(b.x, b.y); path.lineTo(c.x, c.y); path.lineTo(a.x, a.y); path.close(); canvas.drawPath(path, paint); }
final Path path = new Path(); final Paint paint = new Paint(); paint.setColor(Color.RED); paint.setAntiAlias(true); paint.setStyle(Paint.Style.FILL_AND_STROKE); path.moveTo(100, 100); path.lineTo(200, 100); path.lineTo(200, 200); path.lineTo(100, 200); path.close(); path.moveTo(150, 150); path.lineTo(180, 150); path.lineTo(180, 180); path.lineTo(150, 180); path.close(); path.setFillType(Path.FillType.EVEN_ODD); canvas.drawPath(path, paint);
// create and draw triangles // use a Path object to store the 3 line segments // use .offset to draw in many locations // note: this triangle is not centered at 0,0 paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(2); paint.setColor(Color.RED); Path path = new Path(); path.moveTo(0, -10); path.lineTo(5, 0); path.lineTo(-5, 0); path.close(); path.offset(10, 40); canvas.drawPath(path, paint); path.offset(50, 100); canvas.drawPath(path, paint); // offset is cumlative // next draw displaces 50,100 from previous path.offset(50, 100); canvas.drawPath(path, paint);
private Path path = new Path(); @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); // compute the path float halfWidth = w / 2f; float halfHeight = h / 2f; float centerX = halfWidth; float centerY = halfHeight; path.reset(); path.addCircle(centerX, centerY, Math.min(halfWidth, halfHeight), Path.Direction.CW); path.close(); } @Override protected void dispatchDraw(Canvas canvas) { int save = canvas.save(); canvas.clipPath(circlePath); super.dispatchDraw(canvas); canvas.restoreToCount(save); }
@Override public void draw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.GREEN); paint.setStrokeWidth(6); float radius = 50.0f; CornerPathEffect corEffect = new CornerPathEffect(radius); paint.setPathEffect(corEffect); Path path = new Path(); path.moveTo(20, 20); path.lineTo(400, 20); path.lineTo(600, 300); path.lineTo(400, 400); path.lineTo(20, 400); path.close(); canvas.drawPath(path, paint); }
public void draw(Canvas c) { float size = ...; // The size of your circle Paint color = new Paint(); color.setColor(...); // Color of your circle c.drawCircle(size / 2, size / 2, size / 2, color); Path p = new Path(); float ratio = ...; // How many of the circle you want to have filled float offset = size * (float) Math.sqrt(1-((double) (0.5-ratio) * 2)*((double) (0.5-ratio) * 2)) / 2; float angle = (float) Math.asin((double) (0.5-ratio) * 2); p.addArc(offset, size * (1-percent), size - offset, size, angle, Math.PI - angle); p.close(); c.drawPath(p, color); }