CatchSprite()
Синтаксис
Result = CatchSprite(#Sprite , *MemoryAddress [, Mode])
Описание
Загружает новый Спрайт из указанной области памяти. Экран должен быть открыт с помощью OpenScreen() или OpenWindowedScreen() перед загрузкой спрайта.
Параметры
#Sprite Номер для идентификации нового Спрайта. В качестве этого параметра можно использовать значение #PB_Any, чтобы сгенерировать этот Номер автоматически. *MemoryAddress Адрес буфера памяти содержащего изображение, которое будет использовано для создания Спрайта. Mode (дополн.) Режим. Этот параметр может быть комбинацией следующих значений (с помощью оператора '|'): #PB_Sprite_PixelCollision: Добавляет специальную информацию для обработки столкновений пикселей через SpritePixelCollision(). #PB_Sprite_AlphaBlending : Sprite создается с поддержкой альфа-канала на пиксель, необходимой для DisplayTransparentSprite(). Формат изображения должен его поддерживать (пока только PNG и TIFF).
Возвращаемое значение
Возвращает ненулевое значение, если Спрайт был создан успешно, в противном случае - 0. Если для параметра #Sprite было использовано значение #PB_Any, то в случае успеха будет возвращён сгенерированный Номер.
Комментарии
Спрайты могут быть в формате BMP, либо в любом другом формате поддерживаемом библиотекой ImagePlugin, с помощью данных функций:
UseGIFImageDecoder()
UseJPEGImageDecoder()
UseJPEG2000ImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseTGAImageDecoder()
Созданный Спрайт может быть удалён с помощью функции FreeSprite().
Функция CatchSprite полезна при использовании ключевого слова PureBasic 'IncludeBinary', с помощью которой изображения могут быть помещены внутрь исполняемого файла. Тем не менее, используйте эту опцию очень осторожно, так как она займет больше памяти, чем сохранение файла во внешнем файле (файл одновременно будет находиться как в исполняемой памяти, так и в физической памяти).
Другое часто используемое использование - получение спрайта из сжатого хранилища данных.
"?" это указатель на метку. Более подробную информацию об указателях и доступе к памяти можно найти в соответствующей главе здесь.
Пример (фран.)
InitSprite() OpenScreen(800, 600, 32, "Sprite") DataSection Pic: IncludeBinary #PB_Compiler_Home +"Examples/Sources/Data/PureBasicLogo.bmp" EndDataSection CatchSprite(0, ?Pic) DisplaySprite(0, 210, 260) FlipBuffers() Delay(3000)
См. также
CreateSprite(), LoadSprite()
Поддерживаемые OS
Все