|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Доброго Вам времени суток Уважаемые господа при наличии времени прошу Вас подсказать мне необходимо в программе реализовать возможность рисования стрелок разного вида (векторных стрелок) например пользователь производит клик на форме и удерживая левую клавишу мыши тянет курсор в нужном направлении и в этот момент за курсором движется стрелка там где левая клавиша будет отпущена, прорисовка стрелки завершается понимаю что здесь нужно: знать начальную позицию курсора - где происходит клик левой клавиши мыши знать конечную точку - где левая клавиша мыши будет отпущена должен быть рисунок (массив) с нужным видом стрелки - который будет выбирать пользователь а вот как это реализовать я не знаю подскажите где можно почитать по этому поводу, может есть пример этого С Уважением Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 22:49 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Приветствую, Намик! Собственно на форме нужно отследить событие MouseDown и запомнить координату начала стрелки. Затем следить за событием MouseMove, перерисовывая стрелку от начала до курсора. На событии MouseUp прекращать рисовать стрелку. Вопрос, как рисовать эту стрелку. Растровый вариант тут не совсем подходит, так как картинка должна быть расположена под произвольным углом. Можно рисовать с помощью контрола Line стрелку по координатам, но тут вопрос, какие требования предъявляются к библиотеке стрелок - возможно, они слишком вычурные для такого способа. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 23:34 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Приветствую Вас Shocker.Pro реализовать нужно следующее на карте загружаемой в PictureBox ученик должен будет показать направление по которому шли те или иные войска стрелка - обычная прямая линия с консным наконечником на конце только вот пользователь будет иметь возможность выбирать направление самой стрелки т.е. путь снизу вверх - здесь конусная часть стрелки будет на верхнем конце путь сверху вниз - здесь конусная часть стрелки будет на нижнем конце однако удаление этих стрелок должно происходить полностью я имею ввиду следующее например нарисовал стрелку одну потом вторую и вот нужно удалить первую - прикоснулся к ней и она полностью удалилась (т.е. ты её не стираешь шаг за шагом) вот такое надо С Уважением и Благодарностью Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 23:51 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Это все мелочи. Удалять стрелку можно будет, отслеживая событие Click на линиях, входящих в стрелку. Добиться удаления всех линий, входящих в стрелку можно будет соглашением об именах этих линий (к примеру Line1_25, Line2_25 и Line3_25 - клик по любой из них должен удалить все три линии). Меня больше смущает это: Namikдолжен быть рисунок (массив) с нужным видом стрелкиповторю, если стрелку можно нарисовать с помощью нескольких линий - это одно, если же требуется работа с растром - это сильно усложняет задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 00:09 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
а тогда я не правильно Вас понял пусть будет прорисовка через Line но тогда как пользователь будет выбирать стрелку которую захочет нарисовать ? С Уважением и Благодарностью Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 00:12 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Ну это тема отдельная. Допустим будет пять видов стрелок. Под них нужно будет написать пять алгоритмов отрисовки (пять процедур, которые на входе получают координаты начала и конца стрелки и рисуют ее). Этими же алгоритмами где-нить в углу формы отрисовываются все пять образцов и лепится простенький блок optionbutton для выбора варианта. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 00:25 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
можете показать пример одной прорисовки линии ? а я уже попробую остальное С Уважением и Благодарностью Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 00:29 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Гм. Возникла некоторая сложность. Я предполагал использовать событие Click на объекте Линия для ее удаления. Но у нее оказывается нет событий (не сталкивался раньше). Если нужно удалять линию щелком по ней, придется крепко подумать, как это лучше реализовать. Создать линию можно так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
удалить так Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 00:45 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Благодарю Вас сейчас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 00:46 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Shocker.Pro а стрелка - конус на конце не получается да ? С Уважением и Благодарностью Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 00:53 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
вот Shocker.Pro сделал так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
теперь как при наведении курсора на какую нибудь линию узнать её имя чтобы удалить С Уважением и Благодарностью Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 01:47 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Namikа стрелка - конус на конце не получается да ?ну так ее тоже надо нарисовать еще двумя-тремя линиями. Namikтеперь как при наведении курсора на какую нибудь линию узнать её имя чтобы удалитьПросто - никак. Она, фактически, не является объектом, у нее нет событий, поэтому я и сказал, что возникла сложность. Поэтому, если хочется сделать быстрее, может быть обдумать альтернативный вариант удаления. К примеру, каждая новая линия рисуется своим цветом. Одновременно где-нить в углу формы появляется кнопочка соответствующего цвета, которая удаляет эту линию. Либо кнопочка лепится около, скажем, начала каждой линии. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 02:10 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
доброго времени суток Shocker.Pro а если ластик стирающий эту линию ? то в этом случае цвет фона должен быть всегда однородным да ? С Уважением и Благодарностью Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 14:39 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Тогда ее надо в принципе рисовать иначе - с помощью графических методов, да, тут и с фоновой картинкой начинаются проблемы. В общем опять же вопрос, хочется это сделать быстро без геморроя или хочется повозиться потратить кучу времени и сил. Как промежуточный вариант - можно ловить клик мышью на форме и чисто математическими методами вычислять, попадают ли какие-то стрелки в эти координаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 15:14 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Приветствую Вас Shocker.Pro Либо кнопочка лепится около, скажем, начала каждой линии. подскажите примером как реализовать эту кнопочку рядом с каждой линией ? С Уважением и Благодарностью Намик ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 15:19 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Сделал на базе Вашего кода Правда не понял, зачем вы использовали MouseMove, если не собирались перерисовывать линию в процессе растягивания, как я предлагал, сделал, чтобы линия рисовалась в процессе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 16:05 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
в Код: vbnet 1.
функция CStr конечно лишняя, случайный копипаст ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2012, 17:04 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
А нельзя подключить какую-нибудь готовую библиотеку шейпов (ну, например, как "рисование" в Офисе) и воспользоваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2012, 08:22 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Когда подводиш курсор к точки то проверка условия если кординаты мыши равны кординатам линии то линиу удалять. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2012, 21:09 |
|
стрелки - как реализовать
|
|||
---|---|---|---|
#18+
Vladimer-M, Сам подумал,зачем влез? "Координаты линии" - это, в большинстве случаев, две (три) координаты пары начало/конец линии, "координаты точки" - это еще две (три) просто координаты. Плюс ещё (в вышеприведенном варианте) имеются "две линии, изображающие стрелку". Что сравнивать? Не забудь, что в векторном варианте - целочисленных и совпадающих "координат" вообще может не быть... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2012, 21:27 |
|
|
start [/forum/topic.php?fid=60&msg=38061034&tid=2157287]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 335ms |
total: | 473ms |
0 / 0 |