PNG en TAB
Publicado: 15 Abr 2012, 23:47
Bueno vengo con otra duda. Quiero insertar varios ".png" en un tab, encontre en el foro ingles dos maneras diferentes, las dos andan, pero no andan.
La primera que encontre es esta.
Este anda, pero no lo puedo insertar en un TAB (o no se como hacerlo), porque por lo que entiendo "dibuja" el ".png" después que muestra el GUI.
Después encontre este
Este anda, pero cuando minimizo el GUI, se deforman las imagenes :(
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
Es obligacion usarlo o como se cierra el GUI, ya se cierra todo?
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()