Todo transparente con imagen.png
Todo transparente con imagen.png
Hola recientemente hace 3 meses empeze programacion en autoit y vi una imagen de un programa hecho con autoit que era transparente salvo por una imagen.png! Alguien sabe como hacer eso? Me sería de gran ayuda! Ante todo gracias, una gran comunidad.
Re: Todo transparente con imagen.png
algun ejemplo de lo que quieres porque no entiendo? alguna captura?
Saludos
Saludos
- ............................................
......................................
Re: Todo transparente con imagen.png
Tal vez te refieres a que la ventana se vea transparente con una imagen png visible, autoit trae un par de ejemplos en la carpeta "...\AutoIt3\Examples\GUI\Advanced\..."
Ahí tienes al AlphaBlend.au3 y Clock.au3, se hacen generalmente con las funciones _GDIPlus_*
Saludos...
Ahí tienes al AlphaBlend.au3 y Clock.au3, se hacen generalmente con las funciones _GDIPlus_*
Saludos...
Re: Todo transparente con imagen.png
Lo que quiero es que quede asi http://www.subeimagenes.com/img/ads1acr-1112748.png el codigo lo hizo un amigo y no me.lo quiere pasar, quiero poner una imagen png y que quede de esa manera!
Re: Todo transparente con imagen.png
Pues mira el codigo del AlphaBlend.au3, e intenta adatarlo a lo que quieres..
Es mas, solo vas a necesitar cambiar la esta linea por la ubicación de tu imagen:
Y hacerle unos cuantos retoques al codigo, como eliminar la primera GUI, cambiar el tamaño de la segunda por el de la imagen a mostrar, no vas a necesitar las funciones WM_NCHITTEST y WM_HSCROLL, si solo quieres mostrar la imagen, sin cambiar la transparencia..
Te recomiendo mirar el codigo e intentar hacerlo tu mismo
Saludos..
Código: Seleccionar todo
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
; ==============================================================================================
; Description ...: Shows how to create an alpha blended form
; Author ........: Paul Campbell (PaulIA)
; Notes .........: The images used for this demo MUST be 32 bpp with alpha channel
; Credits .......: Thanks to lod3n for supplying links to the technical documentation that was necessar
; ==============================================================================================
; ==============================================================================================
; Global constants
; ==============================================================================================
Global Const $AC_SRC_ALPHA = 1
; ==============================================================================================
; Global variables
; ==============================================================================================
Global $hGUI1, $hGUI2, $iLabel1, $iLabel2, $iSlider, $hImage
; Create GUI
$hGUI1 = GUICreate("Alpha Blend", 400, 100)
$iLabel1 = GUICtrlCreateLabel("Adjust slider to change opacity level: (0-255)", 84, 10, 380, 20)
$iSlider = GUICtrlCreateSlider(10, 32, 380, 40)
$iLabel2 = GUICtrlCreateLabel("Drag the layered window around your desktop", 80, 74, 380, 20)
GUICtrlSetLimit($iSlider, 255, 0)
GUICtrlSetData($iSlider, 255)
GUISetState()
; Create layered child window
$hGUI2 = GUICreate("Test", 250, 250, -1, -1, -1, $WS_EX_LAYERED, $hGUI1)
; Load layered image
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Images\Button.png")
;~ $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Images\Torus.png")
SetBitMap($hGUI2, $hImage, 255)
GUISetState()
; Register notification messages
GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Release resources
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
; ==============================================================================================
; Handle the WM_HSCROLL notificaton so that we can change the opacity in real time
; ==============================================================================================
Func WM_HSCROLL($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam, $ilParam
SetBitMap($hGUI2, $hImage, GUICtrlRead($iSlider))
EndFunc ;==>WM_HSCROLL
; ==============================================================================================
; Handle the WM_NCHITTEST for the layered window so it can be dragged by clicking anywhere o
; ==============================================================================================
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam, $ilParam
If ($hWnd = $hGUI2) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc ;==>WM_NCHITTEST
; ==============================================================================================
; SetBitMap
; ==============================================================================================
Func SetBitmap($hGUI, $hImage, $iOpacity)
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlen
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend,
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetBitmap
Código: Seleccionar todo
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Images\Button.png")
Te recomiendo mirar el codigo e intentar hacerlo tu mismo
Saludos..
Re: Todo transparente con imagen.png
Gracias veré que puedo hacer :)