Android Canvas.drawTextOnPath não parece correto quando o Paint está definido como Stroke

StackOverflow https://stackoverflow.com/questions/9493627

  •  14-11-2019
  •  | 
  •  

Pergunta

Eu tenho algumas configurações de código em uma visualização estendida que faz alguns desenhos que são facilmente dimensionados (semelhantes a vetores).(Minha escala está configurada como 0-1,0)

Percebi que quando defino meu preenchimento de tinta como FILL, o texto desenhado em um caminho parece correto, mas quando defino o preenchimento como traço (quero apenas o contorno do texto) a imagem parece estar em alguma viagem de LSD.Aqui está meu código de exemplo:

    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;
    }

Se eu mudar o Paint.Style de FILL para STROKE recebo as imagens abaixo.Eu usei canvas.drawText() e funciona bem mostrando as letras traçadas.É somente quando é aplicado a um Caminho que parece ficar tudo estranho.

Fill Image

Stroke Image

Foi útil?

Solução

Aparentemente, isso se deve ao fato de meu fator de escala ser 0-1.Parece haver um bug na forma como a renderização de um traço com tamanho <1,0 é tratada.A solução sugerida é usar uma escala de 0 a 100.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top