движение картинки над другой картинкой

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
gizmo_zx
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 09.01.2009 (Пт) 13:19

движение картинки над другой картинкой

Сообщение gizmo_zx » 04.02.2009 (Ср) 23:32

Добрый день.
возник такой вопрос: имеется PictureBox с загруженной картинкой в качестве фона.
кнопка и два объекта (два кружка красный и синий).
Задача реализовать движение поочередное объектов при нажатии кнопки. Движение объектов строго по точкам. Точек три (0,0) , (50,50) , (100,100).
Вопросы :?: :
Самый простой (пусть не самый оптимальный, но доступный для чайника) способ создания кружков поверх PictureBox.
Мои соображения по этому поводу: если есть стандартные средства VB для рисования фигур с заливкой, и есть доступ к их свойствам заранее прорисовать кружки 6 раз в заданных координатах, а при нажатии кнопки переключать Visible каждого из кружков (в одних координатах скрывать, в других отображать )

Подозреваю, что это немного смахивает на бред.
Сразу скажу, что с графикой не работал и смутно представляю это направление.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: движение картинки над другой картинкой

Сообщение Saturn.65 » 05.02.2009 (Чт) 0:30

А если менять кнопкой координаты?
Код: Выделить всё
Command1_Click
    Shape1.Left = XXX
    Shape1.Top = YYY
    Shape2.Left = XXX
    Shape2.Top = YYY
End Sub
Главное, ребята, сердцем не стареть...

Йода
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 99
Зарегистрирован: 06.01.2008 (Вс) 21:04
Откуда: Московская область

Re: движение картинки над другой картинкой

Сообщение Йода » 05.02.2009 (Чт) 3:47

Самый простой способ рисования кружков поверх PictureBox это использование методов Circle (для рисования) и Cls (для очистки от нарисованного). К примеру этот код рисует на PictureBox с именем Picture1 круг синего цвета с координатами цетра круга 50,100 и радиусом 25: Picture1.Circle (50, 100), 25, RGB(0, 0, 255). Метод Cls параметров не имеет. На заметку: у метода Circle имеются и дополнительные параметры, позволяющие рисовать дугу а так же приплюснутый круг. Вобщем экспериментируй. Да, чуть не забыл: поставь в свойствах PictureBox`а : ScaleMode = 3 - Pixel; AutoRedraw = True; а в Picture загружай твою картинку.
Описанное выше - простейший случай, когда не требуется высокая скорость, отсутвствие мерцания и.т.д. Для более сложной графики необходимо юзать API. Для начала тебе крайне желательно обзавестись "джентельменским" набором: ApiGuide - дофига примеров юзанья API на VB, ApiViever - больше чем дофига нужных деклараций. Точные линки я не помню, но на форуме стопудово было. Ещё есть статьи про графику: http://www.vbstreets.ru/VB/Articles/65569.aspx и http://www.vbstreets.ru/VB/Articles/65965.aspx Ну и конечно же величайший мануал всех времён и народов: http://msdn.microsoft.com/en-us/library/default.aspx
Sub or Function not defined

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: движение картинки над другой картинкой

Сообщение Mikle » 06.02.2009 (Пт) 17:41

Самый простой способ рисования кружков поверх PictureBox это использование методов Circle (для рисования) и Cls (для очистки от нарисованного).

Во-первых, Cls очистит и нарисованное, и картинку, может Redraw?
Во-вторых шейпы все же проще.

Александр_ФФ
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 23.11.2008 (Вс) 11:09
Откуда: Северодвинск

Re: движение картинки над другой картинкой

Сообщение Александр_ФФ » 09.02.2009 (Пн) 12:29

Нет, Cls картинку в PictureBox не очищает, если она загружена через Свойства -> Picture или программно через loadPicture. Конечно при Autoredraw = true
Шейпы, конечно проще, но мерцают при перерисовке.

Api-графика (те же ellips, setpixel) быстрее в 4 - 5 раз. а ещё быстрее вывод попиксельно возможен?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: движение картинки над другой картинкой

Сообщение Mikle » 09.02.2009 (Пн) 17:51

а ещё быстрее вывод попиксельно возможен?

Сначала вывод в массив, потом вывод на форму одной ф-цией SetDiBitstoDevice.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 50

    TopList  
cron