Russian Qt Forum
Май 03, 2024, 17:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Оси координат  (Прочитано 2538 раз)
once_again_abc
Гость
« : Август 31, 2011, 13:34 »

Как грамотно отобразить заданный диапазон значений на оси координат?
Как найти максимально возможное число отображаемых (не перекрывающихся, учитывающих размеры текущего шрифта и т.д.) текстовых значений для данного конкретного диапазона?
Записан
Странник
Гость
« Ответ #1 : Август 31, 2011, 14:26 »

почитайте про QFontMetrics.
Записан
once_again_abc
Гость
« Ответ #2 : Август 31, 2011, 14:43 »

почитайте про QFontMetrics.

Ладно, зайдем с другой стороны =)))
Известны метрики текущего шрифта, известна область отображения. Задача: "максимально возможное число отображаемых (не перекрывающихся, учитывающих размеры текущего шрифта и т.д.) текстовых значений для данного конкретного диапазона".

Как это грамотно сделать автономно на основе данных о шрифте, окне вывода и заданного диапазона? Ну, пусть для большей простоты указана максимальная точность (это даст максимальный bounding rect для числа).
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Август 31, 2011, 17:33 »

Известны метрики текущего шрифта, известна область отображения. Задача: "максимально возможное число отображаемых (не перекрывающихся, учитывающих размеры текущего шрифта и т.д.) текстовых значений для данного конкретного диапазона".
То что Вы рассказали довольно просто реализовать, но получается что немного счастья от разбросанных абы-каких значений, напр (0, 1.83, 3.66 и.т.д). Если числа слишком малы (или велики) - придется отображать коэффициент "порядок", писать 0.0025 нет смысла. Также "неперекрывающихся" не очень хорошо, какие-то зазоры между значениями необходимы.

Сначала "выбираем шкалу". Напр диапазон значений [32..40]. Округляем 40 - 32 = 8 в большую сторону, имеем 10. Максимальный текст (пока) "10.0", шаг единица. Считаем сколько влазит в область отображения. Напр не все 8, а меньше. Тогда пробуем (30.0, 32.5,  35.0. 37.5, 40.0). Опять не лезет - пробуем еще меньше значений. Ну и в большую сторону аналогично
Записан
alexman
Гость
« Ответ #4 : Сентябрь 01, 2011, 09:59 »

в qwt глянь
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.