drawTextOnPath使用hoffset绘制圆形圆形文本?

时间:2011-07-02 23:26:07

标签: android

以下代码应在圆圈周围绘制文本0 - 23,如在钟面中。这是通过将hoffet参数设置为drawTextOnPath来完成的。但它只适用于圆圈的上半部分,为什么会这样,这是一个错误。事实上,它围绕圆圈打印0-12,但12个中的2个也丢失了。

Path circle = new Path();
circle.addCircle(0, 0, (float) radius, Direction.CW);
Shape   shape2 = new PathShape(circle, 1, 1);
shape2.resize(1, 1); // have to call this sets scaling
shape2.draw(canvas, timeFramePaint);

for (int hour=0; hour < 24; ++hour) {
    // Text
    drawHour(canvas, hour,  radius, textPaint, circle);
}

public void drawHour(Canvas canvas, int hour, double radius,
                 Paint paint, Path path) {
        Logger.getAnonymousLogger().info(String.valueOf(hour));
    float hOffset =  (float) (hour * radius * Constants.Tau / 24);
    final float vOffset = 0;
    canvas.drawTextOnPath(String.valueOf(hour), path, hOffset, vOffset, paint);
}

2 个答案:

答案 0 :(得分:0)

在进行一些测试并查看sdk源代码后,似乎是一个错误。我可能错了,但我看不出设计是如何有用的。

答案 1 :(得分:0)

让我们尝试检查大小父位图和圆的大小。在这里,我想可能是圆的大小和父位图的大小是相同的。所以文字丢失了。