Подтвердить что ты не робот

Android Canvas.drawTextOnPath не выглядит корректным, если для краски задано значение "Инсульт"

У меня есть некоторая установка кода в расширенном представлении, которое делает некоторые чертежи, которые легко масштабируются (векторные). (Моя шкала настроена как 0-1.0)

Я заметил, что когда я устанавливаю заливку краски в FILL, текст, нарисованный на пути, выглядит корректно, но когда я устанавливаю заливку для обводки (я просто хочу контур текста), изображение выглядит так, как будто оно находится на некотором Отключение LSD. Вот мой пример кода:

    Paint yellowPaint = Paints.getFillTextPaint(0.01f, 0xFFffea3e, 0.065f);
    canvas.drawTextOnPath(mContext.getString(R.string.building_a_partnership),
             Paths.getRoundedTextPath(mOuterCircleRectF, 280f, 350f),
             0, -0.025f, yellowPaint);

public static Paint getFillTextPaint(float f, int color, float textSize) {
        Paint textPaint = new Paint();
        textPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
        textPaint.setStyle(Paint.Style.FILL);
        textPaint.setColor(color);
        textPaint.setTextSize(textSize);
        textPaint.setStrokeWidth(f);
        textPaint.setShadowLayer(0.002f, 0.0f, 0.0f, 0xFF000000);
        textPaint.setTypeface(Typeface.SANS_SERIF);
        return textPaint;
    }

Если я изменил Paint.Style от FILL до STROKE, я получу изображения ниже. Я использовал canvas.drawText(), и он отлично работает с гладкими буквами. Это только тогда, когда оно применяется к Пути, когда кажется, что все странно.

Fill Image

Stroke Image

4b9b3361

Ответ 1

По-видимому, это связано с тем, что мой масштабный коэффициент равен 0-1.. Кажется, есть ошибка с тем, как рендеринг штриха с размером < 1.0. Предлагаемое решение - использовать шкалу от 0 до 100.