Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Пишу эмулятор сборки ПК


Автор: Zdvig 27.4.2006, 12:38
Пишу эмулятор сборки ПК, делать думаю так, есть картинка материнской платы, но она не цельная, а собранная из кучи Images. Нужно ставить элементы ПК на мат. плату, например вставить процессор. Есть картинка процессора, я ее перетаскиваю, на материнскую плату, а точнее на конкретный "кусок" (Image) мат. платы и дальше определяю, если image1 находится над image 2, то выполняется действие. 
Но мне кажется это очень карявый способ, например, он совершенно не держит разрешение 600 Х 800, все Image сдвигаются как попало.
Каким способом можно еще сделать подобное? 

Просто на написание этой программы у меня месяц, в который входит сессия... (Преподам видно нравится давать задания  в притык  smile  ) Поэтому делать что-то сложное уже нет времени...  smile  

Автор: Alexeis 27.4.2006, 13:22
Способ очень хороший, а главное простой. 
А простота многово стоитsmile
Цитата(Zdvig @  27.4.2006,  11:38 Найти цитируемый пост)
600 Х 800, все Image сдвигаются как попало.

В чем это заключается - при нажатии мыши убегают от нее что-ли?
Я думаю, что как быстрый вариант решения - динамически менять разрешение экрана, чтоб всегда было родное. Лучше, конечно, исправить ошибку в програме, чем бороться со следствием. 

Автор: Zdvig 27.4.2006, 13:30
alexeis1, убегают кусочки самой мат платы. 
По ходу сразу вопрос, как определить, что картинка находится над картинкой, даже хоть немного ее "задевая"? У меня сейчас проверяются координаты верхнего левого и верхнего правого углов (cв-ва left и Top) картинок и только при их совпадении происходит событие, но это хорошо только для квадратных картинок. 

Автор: Alexeis 27.4.2006, 15:44
Цитата(Zdvig @  27.4.2006,  12:30 Найти цитируемый пост)
 убегают кусочки самой мат платы. 
 убегают при клике по ним или при попытке их сдвинуть.

Цитата(Zdvig @  27.4.2006,  12:30 Найти цитируемый пост)
меня сейчас проверяются координаты верхнего левого и верхнего правого углов (cв-ва left и Top) картинок и только при их совпадении происходит событие, но это хорошо только для квадратных картинок. 


Я боюсь что придется в отдельный массив занести все точки контура image2  и проверять попадает ли хоть одна из них в прямоугольник Image1.
  

Автор: Snowy 27.4.2006, 17:25
Цитата(Zdvig @  27.4.2006,  13:30 Найти цитируемый пост)
По ходу сразу вопрос, как определить, что картинка находится над картинкой, даже хоть немного ее "задевая"?
А OnDragOver не подходит? 

Автор: Zdvig 27.4.2006, 18:23
alexeis1, смещаются, если запустить программу с низким разрешением. Части мат. платы вообще не двигаются, это просто image подогнанные на форме.

Snowy, по началу так и делал, но мне нужно, чтобы перемещалась сама картинка по форме вслед за курсором.  

Автор: Alexeis 28.4.2006, 09:02
Zdvig, как я понаял Image1 ратягивается по форме, другими словами, при изменении разрешения экрана меняетются размеры формы, а этого не должно происходить. Кроме того если вы используйте свойство Anchors - знайте что привязка к bottom работает нестабильно при различных разрешениях экрана. Попробуйте изменить свойство scaled у элементов формы на false, тогда форма и элемены перестанут реагировать на изменение числа точек на дюйм(это чило может менятся на разных компьютерах) 

Автор: Zdvig 29.4.2006, 13:34
alexeis1, да, спасибо, сделал! 

Автор: s-mike 30.4.2006, 18:26
Цитата(alexeis1 @  28.4.2006,  09:02 Найти цитируемый пост)
привязка к bottom работает нестабильно при различных разрешениях экрана

Работает нормально, вот только если Anchors'ы задавались компонентам, лежащим непосредственно на форме, то могут быть проблемы, связанные с разной шириной рамки окна или компонентов в Win9x/WinXP. Anchors'ы почему-то привязываются к ширине всего контрола/окна, а не его клиентской области. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)