Страница: 1 |
Страница: 1 |
Вопрос: Проблема с часами
Добавлено: 29.05.07 22:15
Автор вопроса: Loki
Помогите, пожалуйста.
Есть программа "Часы". Программа показывает системное время в виде механических часов. Примеры есть на сайте. Так вот, нужно сделать так, чтобы можно было курсором мыши перетаскивать часовые, минутные и секундные стрелки. Стрелки прорисовываются на форме либо как линии, либо как массив рядом стоящих рисунков (кругов). Линиям задается функция, с помощью которой стрелки двигаются.
Как сделать так, чтобы эти стрелки можно было передвигать по кругу с помощью курсора? Грубо говоря, поменять на часах время так, как мы меняем его на обычных механических часах, но с помощью мыши.
Буду признателен, если кто-нибудь поможет.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 30.05.07 01:47
Обрабатываешь клик мыши на поле часов.
Смотришь, конец какой стрелки ближе всего к этой точке.
Запоминаешь эту стрелку.
При перемещениях мыши с зажатой кнопкой считаешь угол, на который должна быть повернута стрелка, чтобы она указывала на эту точку.
Перемещаешь стрелку.
Номер ответа: 2
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #2
Добавлено: 30.05.07 08:45
Плюс пересчитываешь время. А ещё надо определять по часовой или против часовой поворачиваем стрелку, а то как знать, куда собирались перевести время.
Номер ответа: 3
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #3
Добавлено: 30.05.07 10:53
Впросто надо знать углы поворота всех стрелок.
При MouseDown найти стрелку с углом равным углу вектора от центра циферблата к курсору и запомнить эту стрелку (lngSetrelka = номер_стрелки)
При MouseMove + Button=1 вычислить угол вектора от центра циферблата к курсору и установить этот угол запомненной ранее стрелке
Надо будет еще написать функцию перевода угла поворота стрелки в часовую (непомню как точно называется) систему, т.е. по углу вычислить часы, минуты или секунды
Номер ответа: 4
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 30.05.07 11:50
Короче задача разбивается на множество подзадач. Сам по себе вопрос интересный. Много чего можно придумать.
Номер ответа: 5
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #5
Добавлено: 30.05.07 11:56
Так проще. Всегда так делаю
Номер ответа: 6
Автор ответа:
Loki
Вопросов: 1
Ответов: 1
Профиль | | #6
Добавлено: 31.05.07 17:08
Спасибо. Ох, осталолось все это как код написать...
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 01.06.07 22:37
О, это уже дело техники, элементарно..