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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Манипулирование графическими объектами в VB, Как менять размеры элипса при выполнении 
:(
    Опции темы
sedi
Дата 19.6.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.6.2007

Репутация: нет
Всего: нет



Кто из опытных поможет?
Задачка такая есть картинка (показываем ее на форме) поверх нее нужно бросить элипс и, с помощью мыши, подогнать его размеры под некоторый объект на картинке. 
Как бросить элипс понятно, но как не в конструкторе, а в процессе выполнения активизировать возможность изменять его размеры? И главное - какие методы позволяют поворачивать этот элипс, т.е. менять не только высоту и ширину, но и угол между радиусом и горизонтом?
PM MAIL   Вверх
kapbepucm
Дата 20.6.2007, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Каждый раз перерисовывать... Ну вообще, смотря, что за объект.

Это сообщение отредактировал(а) kapbepucm - 20.6.2007, 09:01


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
JusTalionis
Дата 20.6.2007, 09:16 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Лично я таких способов не знаю. Я бы чертил эллипс при помощи функций синуса и косинуса (в цикле от нуля до 6.28 радиан).


PM MAIL   Вверх
kapbepucm
Дата 20.6.2007, 11:17 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



GDI32 не подхoдит?

Это сообщение отредактировал(а) kapbepucm - 20.6.2007, 11:19


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
sedi
Дата 20.6.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.6.2007

Репутация: нет
Всего: нет



Нет ВЫ не поняли, господа! Проблема не в том как нарисовать элипс, а именно как управлять его размерами и положением во время выполнения проекта. В конструкторе это все возможно, но как в действующем приложении - ?

Может я не понятно сформулировал проблему.
Задача такая. Есть картинка. Надо поверх нее расположить элипс и, с помощью мыши, обрисовать им контуры чего-то, изображенного на картинке - рубец, язва, рана, фурункул, синяк и т.п.  

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

Таким образом, при выполнении проекта надо иметь возможность растягивать/сжимать/поворачивать этот элипс.

PM MAIL   Вверх
kapbepucm
Дата 20.6.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Ну, а просто кинуть и удалить, ничего не изменяя, в процессе не получается?


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
JusTalionis
Дата 21.6.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



sedi:
Нет, почему же,- я именно так и понял.
Поверх картинки начертить по точкам эллипс именно той формы и ориентации, какой нужно.
При перемещении мыши - обновляем картинку и снова отрисовываем эллипс, теперь уже в следующем, изменившемся положении - в соответствии с текущей координатой мыши.
Получается - эллипс шажками следует за движением мыши.

Громоздко, но зато дает абсолютно полный контроль над контуром эллипса.

Вот примерный код. Бросаем на форму пикчбокс Picture1, загружаем в него твою картинку и пишем:
Код

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'процедура черчения эллипса на Пикчбоксе Picture1
 If Button = 1 Then 'чертить, если нажата левая кнопка мыши
  Picture1.Refresh  'обновляем рисунок - уничтожается старый эллипс
  'черчение контура эллипса по точкам
  'x,y - координаты мыши от лев. верх. угла рисунка
  For i = 0 To 6.28 Step 0.01
    R = -0.1 / (Cos(i - Y / 1000) + 1.2)
    Picture1.PSet ((R * X * Cos(i) + 200), (R * X * Sin(i) + 200))
  Next i
 End If
End Sub

Горизонтальное движение мыши управляет размером, вертикальное - поворотом. Как именно будет вращаться эллипс - зависит от того, как обсчитать координаты X и Y.



Это сообщение отредактировал(а) JusTalionis - 21.6.2007, 12:30
PM MAIL   Вверх
kapbepucm
Дата 21.6.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Наверное проблема в скорости исполнения?

Это сообщение отредактировал(а) kapbepucm - 21.6.2007, 14:07


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
JusTalionis
Дата 21.6.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Я давно не догоняю вас, ребята!..
Подумаешь, - эллипс крутить! - задача-то на 7 строчек кода, см там выше пример написал.
А вы - GDI какие-то приплели... GDI, API, FSO все какие-то рубят.. Бейсик-то сам куда делся? найти не могу smile 

PM MAIL   Вверх
kapbepucm
Дата 21.6.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



JusTalionis, я использую GDI, ибо лишний раз не надо думать..., хотя с другой стороны ты прав, скоро Бейсик забудем.


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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