当paint设置为Stroke时,Android Canvas.drawTextOnPath看起来不正确

27
我在扩展视图中设置了一些代码,可以进行一些易于缩放的绘图(类似矢量)。 (我的比例设置为0-1.0)
我注意到当我将我的填充颜色设置为FILL时,路径上绘制的文本看起来正确,但是当我将填充颜色设置为stroke(只想要文本的轮廓)时,图像看起来就像处于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


当开启硬件加速时,drawTextOnPath 可能不是受支持的画布操作。请参阅 http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html。 - Roman Nurik
谢谢Roman,我会查看它的。 - Chrispix
1
好的,我猜这确实是一个 bug(刚刚看了你的代码)。能否在 b.android.com/new 上提交一下?我会通知我们的 Skia 人员。 - Roman Nurik
原来问题出在比例尺小于1.0。 - Chrispix
1
@Chrispix,我没有尝试过你的代码,但我敢打赌问题与绘制的文本大小(太大)有关。如果你再看看那个看起来像LSD之旅的东西,你可以识别出一些巨大字符的部分。祝好运。 - Luis
显示剩余4条评论
1个回答

0

显然,这是由于我的比例因子为0-1。。似乎有一个错误,即如何处理大小<1.0的笔画的呈现方式。建议的解决方案是使用0-100的比例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接