Todo transparente con imagen.png

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Kyan
Mensajes: 7
Registrado: 30 Sep 2014, 17:22

Todo transparente con imagen.png

Mensaje por Kyan »

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.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Todo transparente con imagen.png

Mensaje por Dany »

algun ejemplo de lo que quieres porque no entiendo? alguna captura?


Saludos
  • ............................................Imagen
    ......................................Imagen
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: Todo transparente con imagen.png

Mensaje por PDF »

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...
Kyan
Mensajes: 7
Registrado: 30 Sep 2014, 17:22

Re: Todo transparente con imagen.png

Mensaje por Kyan »

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!
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: Todo transparente con imagen.png

Mensaje por PDF »

Pues mira el codigo del AlphaBlend.au3, e intenta adatarlo a lo que quieres..

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
Es mas, solo vas a necesitar cambiar la esta linea por la ubicación de tu imagen:

Código: Seleccionar todo

$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Images\Button.png")
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 :smt002

Saludos..
Kyan
Mensajes: 7
Registrado: 30 Sep 2014, 17:22

Re: Todo transparente con imagen.png

Mensaje por Kyan »

Gracias veré que puedo hacer :)
Responder