Пятница, 26.04.2024, 21:49
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Категории каталога
BlitzMax [14]
Blitz3D [9]
BlitzPlus [0]
Xna [1]
DarkBasic [0]
Общее [3]
Наш опрос
Где вы планируете встретить новый год?
1. Дома
2. Не дома
Всего ответов: 8
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Статьи
Главная » Статьи » BlitzMax

BlitzMax для начинающих, часть 2
На этот раз мы нарисуем лого BlitzMax на экране и будем его крутить. Как и раньше, мы начнем с установки графического режима.
width=640
height=480
depth=16
Graphics width,height,depth

ОК, нам нужна какая-нибудь картинка. Лого BlitzMax, думаю, подойдет. Вот она в .png формате.

Мы положим нашу картинку в папку с исходником и, затем, загрузим её, используя функцию LoadImage.
logo=LoadImage("bmax120.png")

Функция LoadImage() загружает картинку и возвращает её адрес в памяти, который мы присвоили переменной logo. Теперь мы можем использовать эту переменную, чтобы нарисовать нашу картинку. После загрузки картинки мы начинаем наш главный цикл.
While Not KeyDown(KEY_ESCAPE)

Итак, давай нарисуем нашу картинку на экране. Мы можем сделать это использованием функции DrawImage с данными переменной logo.
DrawImage logo,width/2,height/2

Эти строки рисуют нашу картинку на backbuffer-е с координатами 320(width/2),240(height/2). Это как раз половина размера окна, которое мы создали командой Graphics; таким образом картинка будет нарисована в центре экрана.

Если бы! Знаешь, у картинок есть handle(так его лучше называть(не используя слово "пимпа":))), за который картинку можно таскать по экрану. Ты наверное ничего не понял, так вот: представь себе листок бумаги и канцелярскую кнопку, чтобы прилепить бумажку к стенке тебе нужно проткнуть бумажку и воткнуть кнопку в стенку. Так вот: в приведенном примере: кнопка - это handle, координаты handle: X - расстояние от левого края бумажки до места протыкания кнопкой, Y - расстояние от верхнего края бумажки до места протыкания кнопкой, ну и соответственно бумажка - это картинка.

В BlitzMax этот handle невидим, но всё же определяет, как картинки будут располагаться и вращаться. Когда нужно расположить картинку, то её handle ставится в требуемую позицию, ну а картинка, "привязанная" к нему двигается вместе с ним. Когда поворачивают картинку, то её поворачивают вокруг handle.

По умолчанию, handle картинки расположен в её верхнем левом углу. Но нам, конечно, этого не надо, нам надо, чтобы он был в центре. Это, однако, очень просто делается:
AutoMidHandle True

Если мы будем использовать эту команду перед загрузкой всех картинок, то после их загрузки в дальнейшем, их handle будет располагаться точно посередине.

Итак, у нас есть картинка с handle-ом посередине, так давай её покрутим. Крутить картинку (в реальном времени) в BlitzMax очень просто, нужно использовать функцию SetRotation.
SetRotation ang

Вставь эту строку прямо перед строкой с DrawImage(). Она определяет угол поворота, на который будут поворачиваться все картинки при их рисовании.

Если мы хотим нарисовать две картинки с разным углом поворота, то нам придется использовать функцию SetRotation дважды перед каждым использованием DrawImage.

Не будем мудрить, и используем её всего один раз. Мы будем хранить значение угла в переменной ang, чтобы можно было потом его изменить.
ang=ang+1

Вставь эту строку в любое место главного цикла. Она увеличивает значение угла поворота, так, что при исполнении программы, картинка будет крутиться. Затем нужно flip-нуть буфер, очистить экран, и закончить главный цикл.

Вот весь код, при его исполнении должно появиться крутящееся лого BlitzMax в центре экрана.
;blitzmaxb.bmx
width=640
height=480
depth=16
Graphics width,height,depth

AutoMidHandle True

logo=LoadImage("bmax120.png")

While Not KeyDown(KEY_ESCAPE)

ang=ang+1
SetRotation ang
DrawImage logo,width/2,height/2

Flip
Cls

Wend

Источник: http://blitzetc.boolean.name/issue02.htm#a18

Категория: BlitzMax | Добавил: JohnK (30.03.2007) | Автор: MANIAK_dobrii
Просмотров: 1134
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright JohnK© 2024