Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2014, 16:19   #1
kappa937
Пользователь
 
Регистрация: 15.12.2013
Сообщений: 42
По умолчанию Правильное пересечение Rectangl-ов в C# (Windows Forms)

Здравствуйте.
По событию KeyDown формы, проверяю пересечение двух Rectangl-ов с помощью IntersectWith однако как сделать так, чтобы какие-то события при intersect == true происходили сразу же, а не при последующем нажатии какой-либо клавиши?

Что я имею ввиду:
к примеру
If (Key.Code == Keys.T)
{
if (Rect1.IntersectWith (Rect2) == true) MessageBox.Show("пересеклись");
else * другие действия *
}

у меня сообщение "пересеклись" выводится, уже когда ректанглы и так пересечены и я повторно совершаю какое-то действие, а мне нужно выводить сразу же при первом же пересечении

Подскажите пожалуйста.
kappa937 вне форума Ответить с цитированием
Старый 21.03.2014, 18:57   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

А что ректанглы делают ? двигаются по таймеру/движению мыши ? если да, то и проверяйте пересечение по таймеру/движению мыши.
В общем, картина неполная, чтобы что-то говорить однозначно.
phomm вне форума Ответить с цитированием
Старый 24.03.2014, 02:34   #3
kappa937
Пользователь
 
Регистрация: 15.12.2013
Сообщений: 42
По умолчанию

пробовал и таймером и по нажатию кнопок клавы - результат один: проверяет уже имеющее пересечение, а мне нужно проверить столкновение, т.е. если идем вплотную к ректанглу и жмем в его стоорону- делаем ккие-то действия, то есть в одно передвижение, а не в два.
можете что-то подсказать?
kappa937 вне форума Ответить с цитированием
Старый 24.03.2014, 10:16   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

По нажатию кнопки "Двигаться вправо/влево/вверх/вниз/и т.д.":

1) Запоминаем текущие координаты прямоугольника
2) Изменяем координаты прямоугольника (т.е. сдвигаем его куда надо)
3) Проверяем на пересечение
4) Если пересечение есть, то изменяем координаты прямоугольника на те, которые запомнили в п.1 и выводим табличку "БАБАХ!"
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с# windows forms Илья2014 Windows Forms 2 15.02.2014 22:38
Windows Forms С++ Aleks1994 Помощь студентам 2 04.04.2013 18:40
Функция в Windows Forms Spaun1 Общие вопросы C/C++ 1 10.11.2012 12:04
Windows Forms masashama Windows Forms 12 14.02.2011 16:14
windows.forms *stRong* Помощь студентам 0 04.06.2010 04:39