![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Алёна |
|
|||
|
Unregistered |
Помогите пожалуйста разобраться :
Пусть моя форма Form1 разделена (условно или линиями) на 4 прямоугольные области. Назовём их участками ABCD A B C D Нужно при перетаскивании, например , картинки Image1 на этой форме из одного положения в другое определять- КАКОЙ букве ТЕПЕРЬ принадлежит Image1 ? Т.е. какой участок (или несколько) заняла теперь картинка , после того как левая кнопка мышки отпущена? Вот код перетаскивания картинки (огромное спасибо Devnvd!!! ) : void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { static int X0,Y0,id_set=0; int x,y; if(!Shift.Contains(ssLeft)) { id_set=0; return; } if(!id_set && Shift.Contains(ssLeft)) { X0=X; Y0=Y; id_set=1; return; } TControl *mb=(TControl *)Sender; //сместим компонент x=mb->Left+(X-X0); y=mb->Top+(Y-Y0); mb->SetBounds(x,y,mb->Width,mb->Height); } Как сделать это? Как узнать, если координаты картинки пересекаются (совпадают) с координатами точек участка, то картинка принадлежит данному участку(-кам)? Неужели нужно делать двухмерный массив ?И как его сделать, как узнать , что элементы одного массива совпадают(равны) с элементами другого ? Помогите, пожалуйста! А может есть другие идеи , не через массивы ... |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
А зачем так сложно? достаточно проверять левый край (картинки) и границу сетки, соотв тоже самое с верхним краем картинки.
Если Image1->Left > x, Image1->Top < y, то принадлежит В Если Image1->Top > x, Image1->Top > y, то принадлежит D ну и по аналогии для оставшихся областей... Или я чего-то не так понял? В чем проблема-то? -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |