Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Mikhail1990
17 / 17 / 3
Регистрация: 22.03.2014
Сообщений: 218
#1

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

05.09.2016, 12:44. Просмотров 192. Ответов 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):

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

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

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

Как нарисовать текст? - OpenGL
Хукнул в одной OpenGL игре wglSwapBuffers(HDC hdc), надо перед тем как вызвать оригинальную функцию нарисовать текст (к примеру, &quot;HELLO...

Нарисовать текст на форме - C#
Как вывести текст на форму не используя textbox label итд как сделать спасибо namespace WindowsFormsApplication1 { public...

Нарисовать текст из разноцветных букв - QBasic
Программа рисует надпись QBasic. Причём каждая буква закрашивается разным цветом.

2
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,605
05.09.2016, 14:29 #2
Mikhail1990, что мешает рисовать просто текст как текст вычисляя его точку вставки таким образом что бы она попадала на нужные вам засечки на окружности?
1
Mikhail1990
17 / 17 / 3
Регистрация: 22.03.2014
Сообщений: 218
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
Привет! Вот еще темы с ответами:

SFML не могу нарисовать текст - SFML
Вот код класса: (возможно там всё криво, просто он с самого начала не работает, но постарался для форума поправить) #include &quot;button.cpp&quot;...

.NET 4.x DrawString: как нарисовать текст - Visual Basic .NET
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint ...

Как нарисовать текст по координатам? - C++ WinAPI
Есть dc 600 на 400 нужно наисовать текст по координатам например 350 на 140, как это сделать?

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


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

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

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