Я пытаюсь создать диаграмму ap ie в своем приложении (а также в других диаграммах), и я подумал, что Canvas.drawVertices будет хорошим способом использовать это. Тем не менее, кажется, что нарисованный круг действительно имеет пикселизацию.
Как видно из кода ниже, я попытался использовать краску с включенным сглаживанием, но без эффекта. Я также пытался изменить переменную CIRCLE_RESOLUTION в диапазоне 8–8000, но границы формы пикселируются при каждом значении.
setLayerType(LAYER_TYPE_SOFTWARE, null);
float[] center = new float[]{getWidth() / 2f, getHeight() / 2f};
float radius = Math.min(center[0], center[1]) / 1.3f;
coordinates[0] = center[0];
coordinates[1] = center[1];
colors[0] = Color.BLUE;
colors[1] = Color.BLUE;
for (int i = 2; i < coordinates.length; i++) {
coordinates[i] = center[i % 2] + (i % 2 == 0 ? (float) Math.cos(i / (float) CIRCLE_RESOLUTION * 2 * Math.PI) : -(float) Math.sin((i - 1) / (float) CIRCLE_RESOLUTION * 2 * Math.PI)) * radius;
colors[i] = Color.BLUE;
}
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);
canvas.drawVertices(Canvas.VertexMode.TRIANGLE_FAN, coordinates.length, coordinates, 0,
null, 0,
colors, 0,
null, 0, 0,
paint);
Есть ли способ сгладить края этих фигур?
Если нет t, какие еще методы я могу использовать вместо drawVertices?