drawTextOnPath рисования текста вокруг круга, используя hoffset?

1

Следующий код должен рисовать текст 0 - 23 вокруг круга, как на циферблате. Это делается путем установки параметра hoffet для drawTextOnPath. Но это работает только для верхней половины круга, почему это, это ошибка. Фактически он печатает 0 - 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);
}
  • 1
    Похоже, что-то делать с выравниванием текста. Если выравнивание установлено влево, все числа нарисованы, но немного смещены вправо. paint.setTextAlign (Paint.Align.LEFT);
Теги:

2 ответа

0
Лучший ответ

Кажется, это ошибка после выполнения некоторых тестов и просмотра исходного кода sdk. Я мог ошибаться, но я не понимаю, как это полезно по дизайну.

0

Попробуйте проверить размерный растровый размер и размер круга. Здесь, я думаю, может быть размер окружности, а размер растрового изображения - один и тот же. Так что текст отсутствует.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню