Главная » Статьи » Играем Blitz » BlitzMAX |
На этот раз мы нарисуем лого BlitzMax на экране и будем его крутить. Как и раньше, мы начнем с установки графического режима. ОК, нам нужна какая-нибудь картинка. Лого BlitzMax, думаю, подойдет. Вот она в .png формате. Мы положим нашу картинку в папку с исходником и, затем, загрузим её, используя функцию LoadImage. Функция LoadImage() загружает картинку и возвращает её адрес в памяти, который мы присвоили переменной logo. Теперь мы можем использовать эту переменную, чтобы нарисовать нашу картинку. После загрузки картинки мы начинаем наш главный цикл. Итак, давай нарисуем нашу картинку на экране. Мы можем сделать это использованием функции DrawImage с данными переменной logo. Эти строки рисуют нашу картинку на backbuffer-е с координатами 320(width/2),240(height/2). Это как раз половина размера окна, которое мы создали командой Graphics; таким образом картинка будет нарисована в центре экрана. Если бы! Знаешь, у картинок есть handle(так его лучше называть(не используя слово "пимпа":))), за который картинку можно таскать по экрану. Ты наверное ничего не понял, так вот: представь себе листок бумаги и канцелярскую кнопку, чтобы прилепить бумажку к стенке тебе нужно проткнуть бумажку и воткнуть кнопку в стенку. Так вот: в приведенном примере: кнопка - это handle, координаты handle: X - расстояние от левого края бумажки до места протыкания кнопкой, Y - расстояние от верхнего края бумажки до места протыкания кнопкой, ну и соответственно бумажка - это картинка. В BlitzMax этот handle невидим, но всё же определяет, как картинки будут располагаться и вращаться. Когда нужно расположить картинку, то её handle ставится в требуемую позицию, ну а картинка, "привязанная" к нему двигается вместе с ним. Когда поворачивают картинку, то её поворачивают вокруг handle. По умолчанию, handle картинки расположен в её верхнем левом углу. Но нам, конечно, этого не надо, нам надо, чтобы он был в центре. Это, однако, очень просто делается: Если мы будем использовать эту команду перед загрузкой всех картинок, то после их загрузки в дальнейшем, их handle будет располагаться точно посередине. Итак, у нас есть картинка с handle-ом посередине, так давай её покрутим. Крутить картинку (в реальном времени) в BlitzMax очень просто, нужно использовать функцию SetRotation. SetRotation ang
Вставь эту строку прямо перед строкой с DrawImage(). Она определяет угол поворота, на который будут поворачиваться все картинки при их рисовании. Если мы хотим нарисовать две картинки с разным углом поворота, то нам придется использовать функцию SetRotation дважды перед каждым использованием DrawImage. Не будем мудрить, и используем её всего один раз. Мы будем хранить значение угла в переменной ang, чтобы можно было потом его изменить. ang=ang+1
Вставь эту строку в любое место главного цикла. Она увеличивает значение угла поворота, так, что при исполнении программы, картинка будет крутиться. Затем нужно flip-нуть буфер, очистить экран, и закончить главный цикл. Вот весь код, при его исполнении должно появиться крутящееся лого BlitzMax в центре экрана. | |
Просмотров: 79 | |
Всего комментариев: 0 | |