|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.03.2013, 10:20 | #1 |
Регистрация: 12.06.2011
Сообщений: 3
|
Перемещение нарисованных фигур
Добрый день!
Нарисовал элипс Код:
Благодарю! Работаю в Visual Basic .NET |
19.03.2013, 11:38 | #2 | ||
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Цитата:
Событие MouseMove => если в состоянии перемещения, то определить на сколько пикселей переместился курсор мыши (координаты мы же запомнили, да?) и изменить координаты эллипса на такую же величину. Запомнить новые координаты курсора (заменить ими старые) Событие MouseLeftButtonUp => покинуть состояние перемещения Цитата:
Идея понятна?
Благодарить в репутацию. Проклинать — туда же
|
||
20.03.2013, 10:14 | #3 |
Регистрация: 12.06.2011
Сообщений: 3
|
А как можно запретить рисовать, если мышь направлена на ту фигуру, которая уже нарисовано.
|
20.03.2013, 11:20 | #4 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
1. Координаты отрисованной фигуру, нужно хранить в специальном списке структур. 2. На канве, определяются координаты курсора и сравниваются с координатами в этом массиве. 3. Пре перемещении структуры, часть канвы будет затёрта, значит структура фигуры, должна содержать участок перекрываемой канвы и восстанавливать тот участок, который открывается при её перемещении. Заслоняемую часть, она должна перезаписывать в эту структуру. Можно пойти и другим путём. Создать три буфера отображения. Один, будет содержать изначальную канву, два других, для перерисовки изображений и переключения буферов. Такие режимы обеспечивает 2D графика в DirectX или в OpenGL.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
20.03.2013, 11:20 | #5 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Аналогично: сравнить координаты будущей фигуры (той, которую мы собираемся нарисовать) с координатами всех ранее нарисованных фигур. Если есть пересечения - запрещать рисование
Smitt&Wesson: согласен, я описывал только принцип Также можно пойти по пути WPF/Silverlight, где рисуемые эллипсы будут производными от класса Shape. Тогда все задачи по определению "кликнутой" фигуры и деталей отрисовки будут переложены на плечи фреймворка
Благодарить в репутацию. Проклинать — туда же
Последний раз редактировалось Luuzuk; 20.03.2013 в 11:25. |
20.03.2013, 16:32 | #6 |
Регистрация: 12.06.2011
Сообщений: 3
|
Знаете хорошую литературу о WPF?
|
24.03.2013, 11:02 | #7 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Если бы работал исключительно с Windows, то сказал бы также. Примерно год работал только с WPF, всем его рекомендовал, познал много ее вкусностей, но когда встала задача разработки под другие системы пришлось вновь вспоминать WindowsForm!
Под Linux/GNOME есть очень хорошая, opensource-библиотека, аналог .NET Framework - Gtk#, в которой нет реализации WPF, т.к. WPF - это Windows Presentation Foundation, где Windows не переводится как "Окно", а представляет ОС Windows. Вообще, использование элементов управления, заточеных под конкретную ОС - это очень плохо для C#, который разрабатывался как кроссплатформенный! По указаным причинам, советую ни начинать изучать WPF, а посмотреть в сторону готовых примеров, например Chess Program in C# или воспользоваться поиском по ключу Moving на том же самом CodeProject.
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
14.04.2013, 15:20 | #8 |
Регистрация: 08.04.2013
Сообщений: 9
|
Благодарю вас, нашел очень хорошую библиотеку.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перемещение фигур | ILanor | Помощь студентам | 2 | 02.05.2012 12:25 |
Движение фигур | N.i.k.o.l.a.y. | Общие вопросы Delphi | 1 | 13.03.2012 09:12 |
Растягивание фигур. | KOPC1886 | C# (си шарп) | 4 | 03.05.2011 13:04 |
Площадь фигур | Вор | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 18.05.2009 22:44 |