2012-02-29 49 views
27

我有一些代码设置在扩展视图,它可以轻松缩放(矢量状)的一些图纸。 (我的比例设置为0-1.0)Android的Canvas.drawTextOnPath看起来不正确时,油漆设置为笔画

我注意到,当我将我的油漆填充设置为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

+0

'drawTextOnPath'可能不是硬件加速开启时受支持的画布操作。见http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html – 2012-02-29 20:56:24

+0

感谢罗马,将检查出来。 – Chrispix 2012-03-01 04:45:58

+0

所以,我试过这个instance.setLayerType(View.LAYER_TYPE_SOFTWARE,null);做了drawTextOnPath,然后做了instance.setLayerType(View.LAYER_TYPE_HARDWARE,null); - 做同样的事情。 – Chrispix 2012-03-02 02:22:59

回答

0

显然,这是由于这样的事实,我的比例因子是0-1 ..似乎有瓦特/如何渲染冲程尺寸< 1.0被视为是一个错误。建议的解决方案是使用0-100的刻度..