Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двухмерный массив? BorlandCBuilder 
:(
    Опции темы
Алёна
Дата 25.10.2003, 09:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 25.10.2003, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 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
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.