![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Yurik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.6.2005 Репутация: нет Всего: нет |
Требуется следующий компонент:
координатная сетка, чтоб при перемещении мыши по ней она(мышь) скакала по узлам этой сетки. (как в автокаде). При щелчке по узлу там отрисовывалась точка и ее координаты(х,у) добавлялись в массив. Очень хотелось бы готовый компонент, влом возиться с drawing, graphics и т.д. и фигачить все это вручную.... |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
вряд ли такой есть..
|
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
Yurik все таки придется ) или закажи кому нибудь :)
-------------------- |
|||
|
||||
| Yurik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.6.2005 Репутация: нет Всего: нет |
Нарисовать линии - не проблема, есть метод DrawLine.
А как заставить мышь прыгать только по пересечениям этих линий? (то бишь по сетке) Есть идеи? |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
отлавливать MouseMove, читать координаты курсора и округлять их до ближ. узла сетки и ставить коорд. курсора чрез
вота.. |
|||
|
||||
| Yurik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.6.2005 Репутация: нет Всего: нет |
а как узнать координаты ближайшего узла сетки?
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Округлить до ближайшего меньшего: rounded_integer = integer - (integer % step)
-------------------- ![]() |
|||
|
||||
| Yurik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.6.2005 Репутация: нет Всего: нет |
Не понимаю....
Предположим, шаг=1. Т.е. у нас сетка из квадратиков со сторонами 1. Мышь находится внутри одного из таких квадратов. Как узнать, какой из 4-х углов ближайший? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
А разве позиция мыши может быть в дробных числах ? -------------------- ![]() |
|||
|
||||
| Yurik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.6.2005 Репутация: нет Всего: нет |
Ну блин, допустим шаг=100 пикселов.
Квадраты 100*100 Как заставить мышь скакать по узлам? |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
тебе же только что объяснили!
при каждом событии MouseMove ты: 1. читаешь координаты курсора с помощью класса Cursor. 2. округляешь до ближайшего узла сетки x и y 3. с помощью SetCursorPos устанавливаешь позицию x и y в получившиеся значения. что неясно? |
|||
|
||||
| lovermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 28.12.2004 Где: Прага Репутация: 1 Всего: 8 |
Тут по форуму часто ходят люди, которые предлагают написать что-то полезное. Добровольцы, ау!
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
По просьбам трудящихся...
-------------------- ![]() |
|||
|
||||
| Yurik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.6.2005 Репутация: нет Всего: нет |
Спасибо огромное
|
|||
|
||||
| 4YBAK |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 16.1.2006 Репутация: нет Всего: нет |
В данном коде отклонение мыши накапливается, т.е. надо какое-то время (расстояние) вести мышью, чтобы она перепрыгнула на следующий узел. А как сделать, чтобы провел мышью один пиксел влево - она и прыгнула на узел влево, провел - вверх - прыгнула вверх и т.д.
Ну, конечно, один пиксел это мало. В этом случае попасть в нужный узел будет невозможно. Лучше взять пикселов 10. При этом чтоб шаг прыжка по-прежднему оставался 50. Добавлено @ 13:44 Т.е. проехали вправо 10 пикселов, после чего совершаем прыжок на 50, считая от начальной точки(предыдущего узла) |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |