Как использовать сглаживание с drawVertices на Canvas? - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать диаграмму 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...