![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
[attachment=708:graphics...rdinates.JPG]
Проблема в том, что координаты на осях и координаты в контекстном меню не совпадают. Как получить точные координаты от графика? Вот так реализовано меню:
Есть мысли, где возможна ошибка? |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
А помоему, вполне совпадают ±погрешность установки указателя мыша
|
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата вообще кликать мышкой в график это засада. Удобнее когда есть курсор - перекрестие которо ты двигаешь, точка пересечения курсора при этом бегает по самому графику, вот её координаты и выводи. А это как? Можешь описать. Сделаю, если пойму и будет пригодно в этой задаче... Сообщение отредактировал AD - 15.7.2009, 16:33 |
|
|
mozgofil |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 32 Регистрация: 23.4.2009 Пользователь №: 706 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
- извращение(imho)
стандартный подход: при перемещении мыши (MouseMove) выводить координаты графика в статус-баре или в углу Вида. |
|
|
AD |
![]()
Сообщение
#7
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата - извращение(imho) стандартный подход: при перемещении мыши (MouseMove) выводить координаты графика в статус-баре или в углу Вида. Все претензии к пользователям. Такие требования и пожелания! ![]() |
|
|
mozgofil |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 32 Регистрация: 23.4.2009 Пользователь №: 706 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата - извращение(imho) стандартный подход: при перемещении мыши (MouseMove) выводить координаты графика в статус-баре или в углу Вида. Все претензии к пользователям. Такие требования и пожелания! ![]() ну вот ![]() тогда такой совет : 1)преобразовать координаты курсора в координаты графика 2)"опустить" из этой точки перпендикулярна график, либо просто "провести" ортогональную прямую до пересечения с графиком |
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
mozgofil |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 32 Регистрация: 23.4.2009 Пользователь №: 706 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
при перемещении мыши (MouseMove) выводить координаты графика а если мышь там где нет крвой, за её пределами? Прикажешь пользователю целитсься?в статус-баре или в углу Вида. А что такого ? если хотят значение на графике пусть включают "[horizontal|vertical] viewfinder" в контекстном меню. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#11
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
А что такого ? да так ничего, яб, как пользователь, в рыло бы сразу дал ![]() Вот картинка: Удерживая левую кнопку мыши вошкаешь ею по графику: за указателем мыши бегает курсор графика - вертикальная линия с точкой (здесь квадратиком), которая скользит по крифой графика. можно показывать подсказку с координатами (здесь жёлтый прямоугольник) Если тебе нужно показывать координаты в контекстном меню берёшь их из значения точки курсора графика. На этом снимке два курсора один управляется левой кнопкой мыши, второй - правой. Два нужны, чтобы дельты можно было наглядно мерить |
|
|
AD |
![]()
Сообщение
#12
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Ааа. Ну я сейчас работаю как раз над созданием визиров (viewfinder(ов)). Но плюс к этому необходимо, чтобы при тыкании правой кнопки мышки в любой точке графика отобразились координаты как можно более точные. Есть какая-нибудь возможность убрать погрешность?
Уточняющий вопрос: для создания курсора надо использовать QCursor? Есть примеры кода его создания и работы с ним? А еще есть ли возможность создать курсор в виде точки и который будет бегать за мышью? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#13
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#14
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#15
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Вообще-то, это линия, которая показывает значение при пересечение с кривой на графике и значение при пересечении с осью! С какой стати?viewfinder = видоискатель вот он: |
|
|
mozgofil |
![]()
Сообщение
#16
|
Студент ![]() Группа: Участник Сообщений: 32 Регистрация: 23.4.2009 Пользователь №: 706 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А что такого ? да так ничего, яб, как пользователь, в рыло бы сразу дал ![]() Замечательные традиции у вас в конторе ![]() Вот картинка: Удерживая левую кнопку мыши вошкаешь ею по графику: за указателем мыши бегает курсор графика - вертикальная линия с точкой (здесь квадратиком), которая скользит по крифой графика. можно показывать подсказку с координатами (здесь жёлтый прямоугольник) Если тебе нужно показывать координаты в контекстном меню берёшь их из значения точки курсора графика. На этом снимке два курсора один управляется левой кнопкой мыши, второй - правой. Два нужны, чтобы дельты можно было наглядно мерить Очень оригинально, пересказал два моих предыдущих топика ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#17
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#18
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#19
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Юра, есть идеи как получить наиболее точные координаты? Как я понял, ты в этой теме разбираешься. Можешь описать поподробнее как? Буду благодарен за помощь!
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#20
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
AD, сделай курсор графика там всё и увидишь.
|
|
|
AD |
![]()
Сообщение
#21
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
AD, сделай курсор графика там всё и увидишь. А как сделать курсор графика? Подскажи, пожалуйста. Раньше не делал никогда... Хочу чтобы курсор представлял собой точку и бегал за кончиком указатель мыша. Это возможно? Сообщение отредактировал AD - 17.7.2009, 14:14 |
|
|
AD |
![]()
Сообщение
#22
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
А есть какие-нибудь примеры с курсором графика? Я не знаю с чего начать его делать.... Что именно надо сделать, чтобы он был?
Сообщение отредактировал AD - 20.7.2009, 12:51 |
|
|
BRE |
![]()
Сообщение
#23
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
У нас есть виджет на котором рисуется график.
Его размер в точках - sizeWidget, пусть будет sizeWidget.x = 200, sizeWidget.y = 100. Есть позиция мыши внутри этого виджета, пусть будет posMouse.x = 180, posMouse.y = 23. Есть размер системы координат графика sizeGraph, пусть будет sizeGraph.x = 1000, sizeGraph.y = 200. Что бы получить значение координаты мыши делаем: point.x = posMouse.x * sizeGraph.x / sizeWidget.y -> point.x = 180 * 1000 / 200 = 900. График рисуется по формуле y = f(x), подставляем полученное значение по горизонтали и получаем point.y. Сообщение отредактировал BRE - 21.7.2009, 13:38 |
|
|
AD |
![]()
Сообщение
#24
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
У нас есть виджет на котором рисуется график. Его размер в точках - sizeWidget, пусть будет sizeWidget.x = 200, sizeWidget.y = 100. Есть позиция мыши внутри этого виджета, пусть будет posMouse.x = 180, posMouse.y = 23. Есть размер системы координат графика sizeGraph, пусть будет sizeGraph.x = 1000, sizeGraph.y = 200. Что бы получить значение координаты мыши делаем: point.x = posMouse.x * sizeGraph.x / sizeWidget.y -> point.x = 180 * 1000 / 200 = 900. График рисуется по формуле y = f(x), подставляем полученное значение по горизонтали и получаем point.y. Дело в том, что приблизительно такой алгоритм и используется.
initXY(&events -> pos()) - как раз и переводит в координаты графика. Что указанная функция initXY работает правильно - я уверен - проверено и давно. Все дело в координатах events -> pos(), которые выдаются с погрешностью, которая недопустима. |
|
|
BRE |
![]()
Сообщение
#25
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Все дело в координатах events -> pos(), которые выдаются с погрешностью, которая недопустима. Ты уверен, что эти координаты возвращаются с погрешностью? ![]() Попробуй добавить вывод в консоль этих координат и посмотреть что выводиться. P.S. Покажи функцию initXY. Сообщение отредактировал BRE - 21.7.2009, 15:06 |
|
|
AD |
![]()
Сообщение
#26
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
P.S. Покажи функцию initXY. Без проблем. Реализация этой функции в большей степени переписана из Бланшета и Саммерфилда:
|
|
|
BRE |
![]()
Сообщение
#27
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Без проблем. Реализация этой функции в большей степени переписана из Бланшета и Саммерфилда: А как определены spanX() и spanY()? --- Попробуй так:
Сообщение отредактировал BRE - 21.7.2009, 17:17 |
|
|
AD |
![]()
Сообщение
#28
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Так и определены ![]() А функцию initXY(), попробую сейчас. |
|
|
AD |
![]()
Сообщение
#29
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Ну... алгоритм ведь тот же. Единицу ток не вычитаем. Ничего не изменилось. Нет плавного перемещения визира.
|
|
|
BRE |
![]()
Сообщение
#30
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#31
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
BRE |
![]()
Сообщение
#32
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
координаты те же. График тот же - то есть с погрешностью.... При длине вертикальной шкалы 800 единиц и размере виджета по вертикале 100 точек, при сдвиге мышки на одну точку шаг на графике будет составлять 8 единиц, при размере виджета 200 точек - 4 единицы.... От этого никуда не деться, только если не сделать длину оси в точках равной длине в единицах. ![]() Визир - viewfinder. Не знаю почему нет плавности, но двигается скачкообразно. Почему так происходит? Ведь ты работаешь с экранными координатами. ![]() |
|
|
AD |
![]()
Сообщение
#33
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Почему так происходит? Ведь ты работаешь с экранными координатами. ![]() Не знаю разбираться придется завтра. А вот с координатами, выходит, надо искать метод, который сможет дать более точный результат. Т.е. events -> pos() - не подходит. Ты знаешь как сделать предложенный Юрием курсор графика? Я вообще в не понимаю с чего начать для его реализации? Сообщение отредактировал AD - 21.7.2009, 21:27 |
|
|
BRE |
![]()
Сообщение
#34
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
А вот с координатами, выходит, надо искать метод, который сможет дать более точный результат. Т.е. events -> pos() - не подходит. Так вариантов нет, шаг в одну точку на экране это 8 точек на графике (при тех условиях которые я приводил выше). Точнее двигать мышь ты не сможешь. ![]() Ты знаешь как сделать предложенный Юрием курсор графика? Я вообще в не понимаю с чего начать для его реализации? Нужно посмотреть, подумать. У меня сейчас форум только по диагонале читать получается. Времени не много... ![]() Сообщение отредактировал BRE - 22.7.2009, 7:54 |
|
|
AD |
![]()
Сообщение
#35
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Так вариантов нет, шаг в одну точку на экране это 8 точек на графике (при тех условиях которые я приводил выше). Точнее двигать мышь ты не сможешь. ![]() На мой взгляд, вариант Юрия и есть альтернатива указанному алгоритму. Сейчас, после того как поправил разбор времени (mktime), буду думать как его реализовать. |
|
|
AD |
![]()
Сообщение
#36
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Описание проблемы перемещения визира находится здесь
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 4.5.2025, 6:20 |