27

簡単に拡大縮小できる(ベクトルのような)いくつかの図面を実行する拡張ビューでいくつかのコードを設定しています。(私のスケールは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()を使用しましたが、ストロークされた文字を表示すると正常に機能します。それがパスに適用されたときだけ、それがすべて奇妙に見えるときです。

画像を塗りつぶす

ストローク画像

4

1 に答える 1

0

どうやらこれは私のスケールファクターが0-1であるという事実によるものです。サイズ<1.0のストロークのレンダリングがどのように扱われるかというバグがあるようです。推奨される解決策は、0〜100のスケールを使用することです。

于 2012-09-24T20:32:53.883 に答える