绘制一个部分动态填充的圆圈

时间:2015-05-22 23:12:26

标签: java android android-canvas

我正在尝试使用画布。我可以绘制一些三角形并填充它部分绘制一条路径并绘制它。我使用了Path,Points和Line。记住三角学是一个很好的练习。现在我想用圆圈做同样的事情,如下所示。我想设置一个百分比并填充这个圆圈直到圆的高度*百分比。我怎么能用帆布或一些lib画一个像这样的圆圈?

enter image description here

2 个答案:

答案 0 :(得分:2)

你应该稍微考虑一下。我这样做的方法是绘制一个彩色矩形(高度是圆的预期高度的百分比),然后用圆圈裁剪。 This回答解释了如何裁剪圆形图像(我更喜欢链接而不是重新输入代码)。

答案 1 :(得分:0)

我终于做到了。我创建了两种方法。正如咆哮者所说,我创建了一个白色矩形作为面具,其高度是圆的预期高度的百分比。

private Bitmap drawWithPorterDuff(Bitmap original, Bitmap mask, PorterDuff.Mode mode) {
    Bitmap bitmap = Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Paint maskPaint = new Paint();
    maskPaint.setAntiAlias(true);
    canvas.drawBitmap(original, 0, 0, null);
    maskPaint.setXfermode(new PorterDuffXfermode(mode));
    canvas.drawBitmap(mask, 0, 0, maskPaint);
    Bitmap edge = BitmapFactory.decodeResource(getResources(), R.drawable.edge);
    maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.ADD));
    canvas.drawBitmap(edge, 0, 0, maskPaint);
    return bitmap;
}

public Bitmap createMask(int width, int height) {
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.WHITE);
    paint.setAntiAlias(true);
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawRect(0, 0, width, height, paint);
    return bitmap;
}

在view的构造函数中,我使用下拉代码

创建了一个init()方法
    PorterDuff.Mode mode = PorterDuff.Mode.SRC_IN;
    Bitmap original = BitmapFactory.decodeResource(getResources(), R.drawable.blue_graph);
    Bitmap mask = createMask(original.getWidth(), (int) ((original.getHeight()) * (1 - percentage)));
    Bitmap result = drawWithPorterDuff(original, mask, mode);
    imageView.setImageBitmap(result);