2011-07-02 15 views
1

次のコードでは、時計のように円の周りに0〜23のテキストを描画する必要があります。これは、hoffetパラメーターをdrawTextOnPathに設定することによって行われます。しかし、それはサークルの上半分でしか動作しません、なぜこれはバグでしょうか?実際にはサークルの周りに0 - 12を印刷しますが、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

いくつかのテストを行い、sdkソースコードを確認した後にバグが発生しているようです。私は間違っている可能性がありますが、設計上どのように役立つかはわかりません。

0

サイズの親ビットマップと円のサイズを確認してみましょう。ここでは、私は円と親のビットマップサイズのサイズが同じであると思う。テキストが欠落しています。

関連する問題