нибудь использовали изображения SVG в пурике
Пока не приходилось.
нужен ли для этого WebGadget
Судя по всему, нет.
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » 2D графика, и все связанное с ней
нибудь использовали изображения SVG в пурике
Пока не приходилось.
нужен ли для этого WebGadget
Судя по всему, нет.
Пётр
У меня при использовании этого чуда, компилятор ругается, что строковым переменным присваивается числовое значение, при этом переменная выделена цветом ASM зарезервированного слова.При попытке изменить имена переменных вылетает мессага об ошибке pure.ASM
Да, странно как-то.
Там ещё и структур не хватает.
Пётр
Структуры и несколько функций, на третьей странице той темы, их нужно добавить в начало. В принципе код работает, файл создаётся, но при запуске у меня ноут виснет на несколько минут
но при запуске у меня ноут виснет на несколько минут
Как оказалось, эта прога требует очень много оперативки (у меня запросило больше 1.4 ГБ)!
http://s58.radikal.ru/i162/1008/7f/d90deba8685e.png
Помогите пожалуйста. Этот код у меня почему то не работает.
;Объявляем процедуры Declare GestionClavier() Declare AnimationSprite() Declare DeplaceSprite() Declare AfficheTexte() Structure s_Sprite Direction.l ; Направление анимации ImageEnCours.l ; Указывает на образ анимации в настоящее время ImageMaxi.l ; Количество Maxi изображения для анимации, имеется 3 кадра направления TailleX.l ; X размерности каждого изображения TailleY.l ; Y размерность каждого изображения TempsEnCours.l ; Определяет длину "отображения" текущего изображения TempsMaxi.l ; Указывает максимальную длину "отображения" изображения до следующей x.l ; Позиция X спрайта y.l ; Позиция Y спрайта PasX.l ; Скорость перемещения по оси X PasY.l ; Скорость перемещения по оси Y EndStructure ;Объявляемe 4 константы Enumeration #AnimeHaut #AnimeDroite #AnimeBas #AnimeGauche EndEnumeration ;Объявляем наш объект Global Gus.s_Sprite Gus\Direction = #AnimeDroite ; Выберем направление Gus\ImageMaxi = 0 ; (0,1,2) 3 изображения Gus\ImageEnCours = 0 ; На юге премьера изображения вместо анимации Gus\TailleX = 100 ; Размер изображения Gus\TailleY = 130 ; Размер изображения Gus\TempsEnCours = ElapsedMilliseconds() ; Инициализирует длину "отображения" ImageEnCours Gus\TempsMaxi = 150 ; скорость анимация Gus\x = 200 ; Позиция X на экране Gus\y = 200 ; Позиция X на экране ;Инициализация условий, необходимых для функционирования спрайты и открыть экран. InitSprite() ;Инициализацию Управление с клавиатуры. InitKeyboard() ;Открыть новый экран с характеристиками: Ширина, Высота и Глубина. OpenScreen(800,600,32,"Tut Sprite") ;Включаем поддержку PNG UsePNGImageDecoder() ;Загрузить в память спрайтов If LoadSprite(0,"Player.png")=0 MessageRequester("Ошибка","Не удалось загрузить спрайт Player.png",0) End ; Выход из программы EndIf Repeat ;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном. ;Невидимая часть буфера полностью заменяет видимой части. ExamineKeyboard() ;Очищает "текущего экрана с цветом, указанным. ClearScreen(RGB(0, 0, 0)) ;Управление клавиатурой GestionClavier() ;Вывод текста AfficheTexte() ;Анимация спрайта AnimationSprite() ;Смещение спрайт DeplaceSprite() If StartDrawing(SpriteOutput(0)) Box(0, 0, 3000, 3000, RGB(255, 0, 155)) EndIf Until KeyboardPushed(#PB_Key_Escape) End Procedure AfficheTexte() StartDrawing(ScreenOutput()) FrontColor($FFFFFF) BackColor($FF0000) DrawText(10,10,"Нажмите клавишу [Esc] для выхода") StopDrawing() EndProcedure Procedure GestionClavier() If ExamineKeyboard() ; Курсор вверх If KeyboardPushed(#PB_Key_Up) Gus\Direction=#AnimeHaut Gus\PasY = -1 ; Курсор вправо ElseIf KeyboardPushed(#PB_Key_Right) Gus\Direction=#AnimeDroite Gus\PasX = 1 ; Курсор вниз ElseIf KeyboardPushed(#PB_Key_Down) Gus\Direction=#AnimeBas Gus\PasY = 1 ; Курсор влево ElseIf KeyboardPushed(#PB_Key_Left) Gus\Direction=#AnimeGauche Gus\PasX = -1 EndIf EndIf EndProcedure Procedure AnimationSprite() ;Проверяет, длина Maxi "отображения" картинки If ElapsedMilliseconds()-Gus\TempsEnCours>Gus\TempsMaxi ; Устанавливает длину дисплей Gus\TempsEnCours=ElapsedMilliseconds() ; Увеличение текущего изображения, для отображения следующего. Gus\ImageEnCours + 1 ; Петля If Gus\ImageEnCours>Gus\ImageMaxi Gus\ImageEnCours = 0 EndIf EndIf ClipSprite(0,Gus\ImageEnCours * Gus\TailleX, Gus\Direction * Gus\TailleY, Gus\TailleX , Gus\TailleY) EndProcedure Procedure DeplaceSprite() Gus\x + Gus\PasX ; Добавляет X не текущее положение спрайта Gus\y + Gus\PasY ; Добавляет Y не текущее положение спрайта Gus\PasX = 0 ; Инициализирует шаг X Gus\PasY = 0 ; Инициализирует шаг Y ;Новое отоброжение спрайта DisplayTransparentSprite(0,Gus\x, Gus\y) EndProcedure
Нужно поставить StopDrawing() чтоб закончить рисование!
If StartDrawing(SpriteOutput(0)) Box(0, 0, 3000, 3000, RGB(255, 0, 155)) StopDrawing() EndIf
Всё равно не работает. А здесь у меня нет ошибки:
Repeat
;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном.
;Невидимая часть буфера полностью заменяет видимой части.
ExamineKeyboard()
;Очищает "текущего экрана с цветом, указанным.
ClearScreen(RGB(0, 0, 0))
;Управление клавиатурой
GestionClavier()
;Вывод текста
AfficheTexte()
;Анимация спрайта
AnimationSprite()
;Смещение спрайт
DeplaceSprite()
;Отменяет буфер "фон с буфера видимых аль-дюймовым экраном. ;Невидимая часть буфера полностью заменяет видимой части. ExamineKeyboard()
Функция ExamineKeyboard() делает совсем не то что написано в комментарии.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » 2D графика, и все связанное с ней