Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Mikhail1990
24 / 23 / 5
Регистрация: 22.03.2014
Сообщений: 265
#1

Нарисовать текст drawTextOnPath горизонтально - Программирование Android

05.09.2016, 12:44. Просмотров 258. Ответов 2
Метки нет (Все метки)

Привет! Есть функция которая рисует текст на пути (drawTextOnPath). Путь этот повторяет круг. Текст рисуется вдоль окружности круга. Соответственно буквы поворачиваются вместе с кругом. Мне не нужен такой поворот, буквы должны быть отображены строго горизонтально.
Подскажите как это сделать?
Пробовал делать через background изображение, вместо отрисовки букв фоном поставил готовые отрисованные, получается терпимо но это костыль.
Думал отрисвоать каждую букву отдельно но то этот подход очень не практичный, не получится выставить пропорционально друг от друга буквы (тем более поддержка многих экранов усложнится в разы).
Первая картинка как надо вторая как есть.
Нарисовать текст drawTextOnPath горизонтально

Нарисовать текст drawTextOnPath горизонтально

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void drawLegend(Canvas canvas) {
        canvas.save(Canvas.MATRIX_SAVE_FLAG);
        canvas.rotate(-228, centerX, centerY);
 
        float tmpRadius = radius + 25;
        Path circle = new Path();
        double halfCircumference = (tmpRadius * 2 * Math.PI) - ((tmpRadius * 2 * Math.PI) / 8) * 2;
        double increments = 5;
        
        for (int i = 0; i <= this.mMaxSpeed; i += increments) {
            circle.addCircle(centerX, centerY, tmpRadius, Path.Direction.CW);
            canvas.drawTextOnPath(String.format("%d", i),
                    circle,
                    (float) (i * halfCircumference / this.mMaxSpeed),
                    -20f,
                    scalePaint);
        }
 
        canvas.restore();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2016, 12:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Нарисовать текст drawTextOnPath горизонтально (Программирование Android):

Нарисовать на канвасе цветной текст
Подскажите, может кто сталкивался... Решил начать писать свою реалицию...

Как нарисовать текст в прямоугольнике с переносом слов по ширине и отрезанием текста по высоте?
Привет всем. собсно сабж. У кого есть идеи? Спасибо.

Как написать в Label (текст) не горизонтально, а вертикально
Очень нужно!!!

Нарисовать текст на форме
Как вывести текст на форму не используя textbox label итд как сделать спасибо ...

Как нарисовать текст?
Хукнул в одной OpenGL игре wglSwapBuffers(HDC hdc), надо перед тем как вызвать...

DrawString: как нарисовать текст
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As...

2
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
05.09.2016, 14:29 #2
Mikhail1990, что мешает рисовать просто текст как текст вычисляя его точку вставки таким образом что бы она попадала на нужные вам засечки на окружности?
1
Mikhail1990
24 / 23 / 5
Регистрация: 22.03.2014
Сообщений: 265
05.09.2016, 17:27  [ТС] #3
vxg, )) и правда ничего.
Java
1
2
3
4
5
6
7
canvas.drawText(String.valueOf(0), (x - width / 2) + 35, (y + height / 2) - 25, scalePaint);
        canvas.drawText(String.valueOf(5), (x - width / 2) - 20, (y) + 8, scalePaint);
        canvas.drawText(String.valueOf(10), (x - width / 2) + 30, (y - height / 2) + 40, scalePaint);
        canvas.drawText(String.valueOf(15), (x), (y - height / 2) - 18, scalePaint);
        canvas.drawText(String.valueOf(20), (x + width / 2) - 30, (y  - height / 2) + 40, scalePaint);
        canvas.drawText(String.valueOf(25), (x + width / 2) + 25, (y) + 8, scalePaint);
        canvas.drawText(String.valueOf(30), (x + width / 2) - 35, (y + height / 2) - 25, scalePaint);
только это вот на столько не оптимально.

Ну всеравно остановлюсь пока на этом решении.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2016, 17:27
Привет! Вот еще темы с решениями:

Как нарисовать текст по координатам?
Есть dc 600 на 400 нужно наисовать текст по координатам например 350 на 140,...

Как нарисовать текст на форме
Вот описания функций: PaintBox = class(BaseDockControl) /// Окно для...

SFML не могу нарисовать текст
Вот код класса: (возможно там всё криво, просто он с самого начала не работает,...

Как нарисовать текст дугой
Всем привет! Как нарисовать текст дугой?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru