ImageCreate
 
Выделяет и инициализирует память для изображения

Синтаксис

Declare Function ImageCreate Overload ( ByVal width As Integer, ByVal height As Integer, ByVal color As UInteger = transparent_color ) As Any Ptr
Declare Function ImageCreate ( ByVal width As Integer, ByVal height As Integer, ByVal color As UInteger = transparent_color, ByVal depth As Integer ) As Any Ptr

Использование

result = ImageCreate( width, height [, [ color ][, depth ]] )

Параметры

width
Требуемая ширина в пикселях.
height
Требуемая высота в пикселях.
color
Значение пикселя, чтобы заполнить(закрасить) область изображения.
depth
Требуемая глубина цвета, в битах на пиксель.

Возвращаемое значение

Если изображение не может быть создано, возвращается нуль(0), в противном случае возвращается адрес изображения. ImageCreate должна вызываться после инициализации графического режима, иначе возвращает 0.

Следовательно, в случае декларации переменной Shared, ImageCreate не может быть использовано в качестве интегрированного инициализатора, даже внутри Udt (в области элемента или конструктора), поскольку значение инициализации (общей переменной) установлено в начале программы до того, как пользовательский код выполняется. Вызов выделения изображения должен быть в разделенных исполняемых инструкциях и после инициализации графического режима.

Описание

Обе процедуры попытаются выделить память для изображения по указанным width и height. Если неудачно, возвращается ноль (0). В противном случае, изображение такого размера создается и инициализируется, заполнив всю площадь пикселей со значением color. Если не указано, color принимает значение прозрачного цвета для текущего графического экрана, который можно найти вызвав ScreenControl. В любом случае, адрес изображения возвращается, который затем контролируется пользователем, и должен быть уничтожен с помощью ImageDestroy.

Первая процедура создает изображение с глубиной цвета, соответствующей текущему графическому экрану, которое можно найти вызвав ScreenControl. Вторая процедура создает изображение с глубиной цвета depth, в битах на пиксель. Для обеих процедур полученное изображение можно использовать в процедурах рисования, в любом режиме экрана--и даже изменяя режим--при условии, что глубина цвета изображения соответствует графическому экрану.

ImageCreate - это рекомендуемый способ выделить память для нового изображения. Распределение памяти -- размер, структура, и т.д.. -- документально может изменяться от версии к версии, что делает вычисления вручную размеров неверным подходом. Однако, ImageInfo может использоваться для извлечения, среди прочего, размера в байтах существующего изображения, позволяя вручную выделять память для копии изображения, или для чтения и записи в файл или устройство.

Get (Графика) может использоваться для инициализации изображения с помощью предварительно выделенной памяти.

Пример

'' Создание графического экрана.
ScreenRes 320, 200, 32

'' Создание изображения с размером 64 x 64 пикселей , с темно-зеленым фоном.
Dim image As Any Ptr = ImageCreate( 64, 64, RGB(0, 128, 0) )

If image = 0 Then
    Print "Failed to create image."
    Sleep
    End -1
End If

'' Сделать полупрозрачным красный круг в центре изображения.
Circle image, (32, 32), 28, RGBA(255, 0, 0, 128),,, 1.0, f

'' Рисуем изображение на экране с помощью различных методов блитирования.
Put (120, 60), image, PSet
Put (140, 80), image, Alpha

'' Удаляем изображение.
ImageDestroy image

Sleep




Различия диалектов

  • Не доступно в диалекте -lang qb , но есть псевдоним __Imagecreate.

Отличия от QB

  • Новое в FreeBASIC

См. также