| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Манипулирование графическими объектами в VB |
| Автор: sedi 19.6.2007, 22:46 |
| Кто из опытных поможет? Задачка такая есть картинка (показываем ее на форме) поверх нее нужно бросить элипс и, с помощью мыши, подогнать его размеры под некоторый объект на картинке. Как бросить элипс понятно, но как не в конструкторе, а в процессе выполнения активизировать возможность изменять его размеры? И главное - какие методы позволяют поворачивать этот элипс, т.е. менять не только высоту и ширину, но и угол между радиусом и горизонтом? |
| Автор: kapbepucm 20.6.2007, 08:12 |
| Каждый раз перерисовывать... Ну вообще, смотря, что за объект. |
| Автор: JusTalionis 20.6.2007, 09:16 |
| Лично я таких способов не знаю. Я бы чертил эллипс при помощи функций синуса и косинуса (в цикле от нуля до 6.28 радиан). |
| Автор: kapbepucm 20.6.2007, 11:17 |
| GDI32 не подхoдит? |
| Автор: sedi 20.6.2007, 19:16 |
| Нет ВЫ не поняли, господа! Проблема не в том как нарисовать элипс, а именно как управлять его размерами и положением во время выполнения проекта. В конструкторе это все возможно, но как в действующем приложении - ? Может я не понятно сформулировал проблему. Задача такая. Есть картинка. Надо поверх нее расположить элипс и, с помощью мыши, обрисовать им контуры чего-то, изображенного на картинке - рубец, язва, рана, фурункул, синяк и т.п. Конечная цель - вычислить площадь этого элемента картинки (точность не так важна, поэтому можно условно считать площадь элипса равной площади выбранного участка изображения). Таким образом, при выполнении проекта надо иметь возможность растягивать/сжимать/поворачивать этот элипс. |
| Автор: kapbepucm 20.6.2007, 20:32 |
| Ну, а просто кинуть и удалить, ничего не изменяя, в процессе не получается? |
| Автор: JusTalionis 21.6.2007, 09:54 | ||
| sedi: Нет, почему же,- я именно так и понял. Поверх картинки начертить по точкам эллипс именно той формы и ориентации, какой нужно. При перемещении мыши - обновляем картинку и снова отрисовываем эллипс, теперь уже в следующем, изменившемся положении - в соответствии с текущей координатой мыши. Получается - эллипс шажками следует за движением мыши. Громоздко, но зато дает абсолютно полный контроль над контуром эллипса. Вот примерный код. Бросаем на форму пикчбокс Picture1, загружаем в него твою картинку и пишем:
Горизонтальное движение мыши управляет размером, вертикальное - поворотом. Как именно будет вращаться эллипс - зависит от того, как обсчитать координаты X и Y. |
| Автор: kapbepucm 21.6.2007, 11:39 |
| Наверное проблема в скорости исполнения? |
| Автор: JusTalionis 21.6.2007, 12:23 |
| Я давно не догоняю вас, ребята!.. Подумаешь, - эллипс крутить! - задача-то на 7 строчек кода, см там выше пример написал. А вы - GDI какие-то приплели... GDI, API, FSO все какие-то рубят.. Бейсик-то сам куда делся? найти не могу |
| Автор: kapbepucm 21.6.2007, 14:15 |
| JusTalionis, я использую GDI, ибо лишний раз не надо думать..., хотя с другой стороны ты прав, скоро Бейсик забудем. |