PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Маленькая проблема со спрайтом.


Маленькая проблема со спрайтом.

Сообщений 1 страница 8 из 8

1

Всем привет. Принялся недавно за спрайты. Появилась маленькая проблема.
Есть у меня файл PNG формата. Изображена ручка. Фон прозрачный.
Пишу

Код:
If LoadSprite(0, "pen.png", #PB_Sprite_AlphaBlending)=0
MessageRequester("Error", "Спрайт не загружен")
End
EndIf

Ну собсна ругается моей ошибкой.
Пробую другие методы. Отображатся. Но без прозрачности. Ручка и куски фона.
Или вообще пишу вместо #PB_Sprite_AlphaBlending просто ноль. Грузится. Но опять же кусками фон.

Что делать?

Отредактировано TantumCapitis (02.09.2012 23:47:31)

0

2

Режим экрана выбирает 32-битный?

0

3

Не полноэкранный режим.
OpenWindowScreen(WindowID(0), 0,50,300,300,0,0,0)
Не знаю как там выбрать битность. Но рабочий стол у меня то точно 32.

0

4

Держи исходники моей мини игры, которую я начал писать, но так и не закончил.
Там спрайты из PNG изображений с альфа-каналом и подобное.

Отредактировано Paranoia (03.09.2012 14:45:01)

0

5

TantumCapitis написал(а):

Что делать?

Справку читать!
#PB_Sprite_AlphaBlending: Спрайт создаётся с поддержкой канала прозрачности для каждого пикселя, формат изображения должен поддерживать это (только
                            PNG и TIFF пока). Флаг #PB_Sprite_Texture также должен быть задан, а спрайт
                            должен отображаться с помощью функции DisplaySprite3D().

НО тебе это надо? Если работать с Sprite3D то может да. Но можно и проще. Тем более, что в природе PNG с AlphaBlending встречается намного реже, чем обычный рисунок. Что  бы вывести спрайт с прозрачным фоном ни какой AlphaBlending не нужен. Устанавливаешь TransparentSpriteColor(#Sprite, Color), где Color цвет фона ( фон заливаешь в графическом редакторе любым цветом, которого нет в спрайте, а то дырки будут). Выводить на экран при помощи DisplayTransparentSprite(#Sprite, x, y)
Вот и все хитрости.

0

6

Спасибо. Попробовал. Эффективно. Но безбожно обрезает границы. И грубые края получаются. До этого вместо спрайта пробовал DrawImage с прозрачностью. Просто супер. Но порекомендовали для игры спрайты.

0

7

TantumCapitis написал(а):

До этого вместо спрайта пробовал DrawImage с прозрачностью. Просто супер. Но порекомендовали для игры спрайты.

Если больше подходит Image, то используй его - кто же тебе запрещает. Тем более, что если устраивает скорость отрисовки и не нужны специальные возможности.

+1

8

Спасибо.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Маленькая проблема со спрайтом.