2011-07-02 42 views
1

下面的代碼應該圍繞一個圓圈繪製文本0-23,就像在鐘面上一樣。這是通過將hoffet參數設置爲drawTextOnPath來完成的。但它只適用於圓圈的上半部分,爲什麼是這個,它是一個錯誤。事實上,它會在圓周上打印0 - 12,但十二個中的2個也會丟失。drawTextOnPath使用hoffset繪製文字繞圓圈?

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); 
} 
+1

它似乎與文本對齊有關。如果對齊方式設置爲左側,則所有數字均被繪製,但略向右側偏移。 paint.setTextAlign(Paint.Align.LEFT); –

回答

0

這似乎是一個bug後做一些測試,看着sdk的源代碼。我可能是錯的,但我不明白設計如何有用。

0

讓我們試着檢查大小的父位圖和圓的大小。在這裏,我想可能是圓圈的大小和父位圖大小是一樣的。所以缺少文字。