Функция _GDIPlus_BitmapCreateFromScan0

         Описание функции


_GDIPlus_BitmapCreateFromScan0

Создаёт Bitmap на основе массива байтов совместно с размером и форматом информации

#Include <GDIP.au3>
_GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight[, $iStride = 0[, $iPixelFormat = 0x0026200A[, $pScan0 = 0]]])

Параметры

$iWidth Ширина bitmap в пикселях
$iHeight Высота bitmap в пикселях
$iStride Целое число указывающее смещение байта между началом одной строки сканирования и началом следующей. Как правило (но не обязательно) это количество байт в пиксельном формате (например, 2 для 16 бит на пиксель), умноженной на ширину Bitmap. Значение, переданное в этом параметре должно быть кратно четырем.
$iPixelFormat [необязательный] Пиксельный формат. Может быть одним из следующих:
$GDIP_PXF01INDEXED = 1 бит на пиксель, индексированный
$GDIP_PXF04INDEXED = 4 бит на пиксель, индексированный
$GDIP_PXF08INDEXED = 8 бит на пиксель, индексированный
$GDIP_PXF16GRAYSCALE = 16 бит на пиксель, градации серого
$GDIP_PXF16RGB555 = 16 бит на пиксель; 5 бит на каждый цвет RGB
$GDIP_PXF16RGB565 = 16 бит на пиксель; 5 бит для красного, 6 бит для зеленого и 5 бит для синего
$GDIP_PXF16ARGB1555 = 16 бит на пиксель; 1 бит для альфа канала и 5 бит на каждый цвет RGB
$GDIP_PXF24RGB = 24 бит на пиксель; 8 бит на каждый цвет RGB
$GDIP_PXF32RGB = 32 бит на пиксель; 8 бит на каждый цвет RGB. Без альфа канала (прозрачности).
$GDIP_PXF32ARGB = 32 бит на пиксель; 8 бит на каждый цвет RGB и альфа канал
$GDIP_PXF32PARGB = 32 бит на пиксель; 8 бит на каждый цвет RGB и альфа канал, предварительно умноженный
$pScan0 [необязательный] Указатель на массив байтов, содержащий данные пикселей. Вызывающий ответственен за выделение и освобождение блока памяти, на которую указывает этот параметр.

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

Успех:Возвращает дескриптор нового объекта Bitmap
Ошибка:Возвращает 0, либо:
Если ошибка DllCall(), устанавливает @error и @extended возвращённые вызовом DllCall()
$GDIP_STATUS содержит не нулевое значение кода ошибки

Примечания

После завершения использования объекта вызовите _GDIPlus_ImageDispose, чтобы освободить ресурсы объекта

См. также

Пример

#include <GDIP.au3>
#include <GUIConstantsEx.au3>

_Example()

Func _Example()
    Local $hGUI, $hGraphics, $hPath, $hPathBrush, $hLineBrush, $hBitmap, $hContext
    Local $avColors[2] = [1, 0x00FFFFFF]

    ; Инициализирует библиотеку GDI+
    _GDIPlus_Startup()

    $hGUI = GUICreate("Создаёт Bitmap сканированием", 400, 200)
    GUISetState()

    ; Создаёт графический объект из дескриптора окна
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)

    ; Создаёт bitmap с размером, но без данных
    $hBitmap = _GDIPlus_BitmapCreateFromScan0(200, 200)

    ; Получает графический контекст bitmap, чтобы рисовать используя двойную буферизацию
    $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    ; Создаёт кисть линейного градиента, чтобы использовать для заливки фигуры
    $hLineBrush = _GDIPlus_LineBrushCreate(1, 1, 200 - 2, 200 - 2, 0x000000FF, 0xA00000FF)

    ; Создаёт объект GraphicsPath для рисования фигур, используя режим заливки по умолчанию
    $hPath = _GDIPlus_PathCreate()

    ; Начинает рисовать фигуру
    _GDIPlus_PathStartFigure($hPath)
    ; Рисует эллипс
    _GDIPlus_PathAddEllipse($hPath, 2, 2, 200 - 4, 200 - 4)

    ; Создаёт кисть объекта path связанную с объектом графический path
    $hPathBrush = _GDIPlus_PathBrushCreateFromPath($hPath)

    _GDIPlus_PathBrushSetCenterColor($hPathBrush, 0x8000FFFF)
    _GDIPlus_PathBrushSetCenterPoint($hPathBrush, 200/2, 200/2)
    _GDIPlus_PathBrushSetFocusScales($hPathBrush, 0.1, 0.1)
    _GDIPlus_PathBrushSetSurroundColorsWithCount($hPathBrush, $avColors)

    ; Задаёт режим сглаживания и рисует объект path на bitmap контексте, используя кисть
    _GDIPlus_GraphicsSetSmoothingMode($hContext, $SmoothingModeAntiAlias)
    _GDIPlus_GraphicsFillPath($hContext, $hPath, $hLineBrush)
    _GDIPlus_GraphicsFillPath($hContext, $hPath, $hPathBrush)

    ; Наконец, рисует bitmap на графическом объекте
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 100, 0)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Освобождает ресурсы
    _GDIPlus_BrushDispose($hPathBrush)
    _GDIPlus_PathDispose($hPath)
    _GDIPlus_BrushDispose($hLineBrush)
    _GDIPlus_GraphicsDispose($hContext)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)

    ; Закрывает библиотеку GDI+
    _GDIPlus_Shutdown()
EndFunc