_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