Определение точных координат на графике в контекстном меню, как реализовать корректно? |
Здравствуйте, гость ( Вход | Регистрация )
Определение точных координат на графике в контекстном меню, как реализовать корректно? |
AD |
17.7.2009, 14:13
Сообщение
#21
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
AD, сделай курсор графика там всё и увидишь. А как сделать курсор графика? Подскажи, пожалуйста. Раньше не делал никогда... Хочу чтобы курсор представлял собой точку и бегал за кончиком указатель мыша. Это возможно? Сообщение отредактировал AD - 17.7.2009, 14:14 |
|
|
AD |
20.7.2009, 12:51
Сообщение
#22
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
А есть какие-нибудь примеры с курсором графика? Я не знаю с чего начать его делать.... Что именно надо сделать, чтобы он был?
Сообщение отредактировал AD - 20.7.2009, 12:51 |
|
|
BRE |
21.7.2009, 13:37
Сообщение
#23
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
У нас есть виджет на котором рисуется график.
Его размер в точках - 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 |
21.7.2009, 14:18
Сообщение
#24
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
У нас есть виджет на котором рисуется график. Его размер в точках - 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 |
21.7.2009, 14:59
Сообщение
#25
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Все дело в координатах events -> pos(), которые выдаются с погрешностью, которая недопустима. Ты уверен, что эти координаты возвращаются с погрешностью? Попробуй добавить вывод в консоль этих координат и посмотреть что выводиться. P.S. Покажи функцию initXY. Сообщение отредактировал BRE - 21.7.2009, 15:06 |
|
|
AD |
21.7.2009, 15:11
Сообщение
#26
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
P.S. Покажи функцию initXY. Без проблем. Реализация этой функции в большей степени переписана из Бланшета и Саммерфилда:
|
|
|
BRE |
21.7.2009, 15:33
Сообщение
#27
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Без проблем. Реализация этой функции в большей степени переписана из Бланшета и Саммерфилда: А как определены spanX() и spanY()? --- Попробуй так:
Сообщение отредактировал BRE - 21.7.2009, 17:17 |
|
|
AD |
21.7.2009, 17:31
Сообщение
#28
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Так и определены А функцию initXY(), попробую сейчас. |
|
|
AD |
21.7.2009, 18:09
Сообщение
#29
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Ну... алгоритм ведь тот же. Единицу ток не вычитаем. Ничего не изменилось. Нет плавного перемещения визира.
|
|
|
BRE |
21.7.2009, 18:19
Сообщение
#30
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
Текстовая версия | Сейчас: 6.2.2025, 1:25 |