27 votes

Android Canvas.drawTextOnPath n'a pas l'air correct lorsque paint est réglé sur Stroke

J'ai un code configuré dans une vue étendue qui fait quelques dessins qui sont facilement mis à l'échelle (de type vectoriel). (Mon échelle est configurée de 0 à 1,0).

J'ai remarqué que lorsque je règle le remplissage de ma peinture sur FILL, le texte dessiné sur un chemin a l'air correct, mais lorsque je règle le remplissage sur stroke (je veux juste le contour du texte) l'image a l'air d'être dans un trip de LSD. Voici mon exemple de code :

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

Si je change le Paint.Style de FILL à STROKE, j'obtiens les images ci-dessous. J'ai utilisé la fonction canvas.drawText() et cela fonctionne bien pour afficher les lettres tracées. Ce n'est que lorsqu'il est appliqué à un chemin d'accès que les choses deviennent bizarres.

Fill Image

Stroke Image

0voto

Chrispix Points 4867

Apparemment, cela est dû au fait que mon facteur d'échelle est de 0-1 . Il semble y avoir un bug dans le traitement du rendu d'un trait de taille < 1.0. La solution suggérée est d'utiliser une échelle de 0-100

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X