Функция _GDIPlus_BitmapCreateFromStream

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


_GDIPlus_BitmapCreateFromStream

Создаёт Bitmap на основе IStream COM интерфейсе

#Include <GDIP.au3>
#include <WinAPI_for_GDIP.au3>
_GDIPlus_BitmapCreateFromStream($pStream)

Параметры

$pStream Указатель на IStream COM интерфейс

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

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

Примечания

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

См. также

Пример

; Спасибо trancexx за код этого примера построенного на:
; http://www.autoitscript.com/forum/index.php?showtopic=98526&view=findpost&p=709026

#include <GDIP.au3>
#include <GUIConstantsEx.au3>
#include <Memory.au3>
#include <ScreenCapture.au3>
#include <WinAPI_for_GDIP.au3>

_Example()

Func _Example()
    Local $hGUI, $hGraphics
    Local $hBmp, $hBitmap, $hBitmapFromStream
    Local $sEncoderCLSID, $tEncoderCLSID, $pEncoderCLSID
    Local $pStream

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

    ; Создаёт GUI (нажмите ESC для выхода)
    $hGUI = GUICreate("Bitmap на основе IStream", @DesktopWidth / 2, @DesktopHeight / 2)

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

    ; Делает снимок левой верхней части экрана
    $hBmp = _ScreenCapture_Capture("", 0, 0, @DesktopWidth / 2, @DesktopHeight / 2, False)

    ; Создаёт объект GDI+ Bitmap из объекта GDI Bitmap
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)

    $sEncoderCLSID = _GDIPlus_EncodersGetCLSID("tiff")
    $tEncoderCLSID = _WinAPI_GUIDFromString($sEncoderCLSID)
    $pEncoderCLSID = DllStructGetPtr($tEncoderCLSID)
    $pStream = _WinAPI_CreateStreamOnHGlobal()
    _GDIPlus_ImageSaveToStream($hBitmap, $pStream, $pEncoderCLSID)

    ; Создает Bitmap на основе IStream COM интерфейсе
    $hBitmapFromStream = _GDIPlus_BitmapCreateFromStream($pStream)

    GUISetState()
    ; Рисует изображение
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmapFromStream, 0, 0)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Освобождает ресурсы
    _GDIPlus_ImageDispose($hBitmapFromStream)
    _GDIPlus_ImageDispose($hBitmap)
    _WinAPI_DeleteObject($hBmp)

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