_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