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