La primera que encontre es esta.
Código: Seleccionar todo
#include <GDIPlus.au3>
#include <GuiConstantsEx.au3>
Opt("MustDeclareVars", 1)
; ===============================================================================================================================
; Global variables
; ===============================================================================================================================
Global $hGUI, $hImage, $hGraphic
; Create GUI
$hGUI = GUICreate("Show PNG", 240, 240)
GUISetState()
; Load PNG image
_GDIPlus_StartUp()
$hImage = _GDIPlus_ImageLoadFromFile(StringReplace(@AutoItExe, "autoit3.exe", "Examples\GUI\Torus.png"))
; Draw PNG image
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
; Loop until user exits
do
until GUIGetMsg() = $GUI_EVENT_CLOSE
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()
Después encontre este
Código: Seleccionar todo
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
Global Const $IMAGE_BITMAP = 0
Global Const $STM_SETIMAGE = 0x0172
Global $msg
Global Const $hGUI = GUICreate("Display PNG Image in picture control", 600, 250)
Global Const $idPic = GUICtrlCreatePic("", 215, 20)
_GDIPlus_Startup()
Global Const $png = StringReplace(@AutoItExe, "autoit3.exe", "Examples\GUI\Torus.png")
Global Const $hImage = _GDIPlus_ImageLoadFromFile($png)
Global Const $Bmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp))
GUISetState()
While True
$msg = GUIGetMsg()
Switch $msg
Case $idPic
MsgBox(0, "Information", "PNG image was clicked")
Case $GUI_EVENT_CLOSE
_WinAPI_DeleteObject($Bmp)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
GUIDelete($hGUI)
Exit
EndSwitch
WEnd
Algun solucion?
EDITO: Encontre la solucion momentanea agregando el tamaño de la imagen a "Global Const $idPic = GUICtrlCreatePic("", 215, 20)".Es momentanea, porque como trabajo con imagenes de 20x20 no se nota si se deforma o no, pero en la imagen del ejemplo si se nota. No es una solucion fiable para trabajar con imagenes grandes.
Otra cosa, cuando sale del porgrama usa los siguientes codes
Código: Seleccionar todo
_WinAPI_DeleteObject($Bmp)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()