Jump to content

png picture gui


realkiller
 Share

Recommended Posts

thx for replying, i found a code and altererd it a little bit the problem now is, the gui start but i cant see the buttons:(

#include <GUIConstants.au3>
#include <A3LGDIPlus.au3>
#Include <Misc.au3>

Opt("OnExitFunc","OnAutoItExit")

Global Const $AC_SRC_ALPHA    = 1
Global Const $ULW_ALPHA   = 2

Dim $Splitted[3]

_GDIP_Startup()

$pngSrc = @scriptdir&"\Bakgrund.png"
$hImageExperiment2 = _GDIP_ImageLoadFromFile($pngSrc)
$Width =  _GDIP_ImageGetWidth ($hImageExperiment2)
$Height = _GDIP_ImageGetHeight($hImageExperiment2)

$GuiExperiment2 = GUICreate("Experiment2", $Width, $Height, 200, 200, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW)); will create a dialog box that when displayed is centered

SetBitMap($GuiExperiment2, $hImageExperiment2, 0)

GUISetState(@SW_SHOW, $GuiExperiment2)
WinSetOnTop($GuiExperiment2,"",1)
SetBitMap($GuiExperiment2, $hImageExperiment2, 255)



$Button_1 = GUICtrlCreateButton ("Run Notepad", 100, 100, 100, 30)
$Button_2 = GUICtrlCreateButton ( "Button Test", 110, 30, 100, 30)

GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")

GUISetState (); will display an dialog box with 2 button

; Run the GUI until the dialog is closed
While 1
    Switch GuiGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $Button_1
            Run('Notepad.exe'); Will Run/Open Notepad
        Case $Button_2
            MsgBox(0, 'Testing', 'Button 2 was pressed'); Will demonstrate Button 2 being pressed
    EndSwitch
 
Wend

Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    if ($hWnd = $GuiExperiment2) and ($iMsg = $WM_NCHITTEST) And _IsPressed(01) then
       
        Return $HTCAPTION
    EndIf
EndFunc

Func OnAutoItExit()
 
    _API_DeleteObject($hImageExperiment2)
    _GDIP_Shutdown()
EndFunc
   
Func SetBitmap($hGUI, $hImage, $iOpacity)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

    $hScrDC  = _API_GetDC(0)
    $hMemDC  = _API_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIP_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld    = _API_SelectObject($hMemDC, $hBitmap)
    $tSize   = DllStructCreate($tagSIZE)
    $pSize   = DllStructGetPtr($tSize  )
    DllStructSetData($tSize, "X", _GDIP_ImageGetWidth ($hImage))
    DllStructSetData($tSize, "Y", _GDIP_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend  = DllStructCreate($tagBLENDFUNCTION)
    $pBlend  = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha" , $iOpacity    )
    DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
    _API_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _API_ReleaseDC   (0, $hScrDC)
    _API_SelectObject($hMemDC, $hOld)
    _API_DeleteObject($hBitmap)
    _API_DeleteDC    ($hMemDC)
EndFunc
Link to comment
Share on other sites

i found it thx anyway:)

#NoTrayIcon
#include <A3LGDIPlus.au3>; this is where the magic happens, people
#include <GuiCombo.au3>
#Include <File.au3>
#include <Array.au3>
Opt("MustDeclareVars", 0)

Global Const $AC_SRC_ALPHA    = 1
Global Const $ULW_ALPHA      = 2
Global $old_string = "", $runthis = ""
Global $launchDir = @DesktopDir

; Load PNG file as GDI bitmap
_GDIP_Startup()
$pngSrc = @scriptdir&"\Bakgrund.png"
$hImage = _GDIP_ImageLoadFromFile($pngSrc)

; Extract image width and height from PNG
$width =  _GDIP_ImageGetWidth ($hImage)
$height = _GDIP_ImageGetHeight($hImage)

; Create layered window
$GUI = GUICreate("lod3n launcher", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
SetBitMap($GUI, $hImage, 0)
; Register notification messages
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUISetState()

for $i = 0 to 255 step 10
    SetBitMap($GUI, $hImage, $i)
next


; create child MDI gui window to hold controls
; this part could use some work - there is some flicker sometimes...
$controlGui = GUICreate("ControlGUI", $width, $height, 0,0,$WS_POPUP,BitOR($WS_EX_LAYERED,$WS_EX_MDICHILD),$gui)

; child window transparency is required to accomplish the full effect, so $WS_EX_LAYERED above, and
; I think the way this works is the transparent window color is based on the image you set here:
GUICtrlCreatePic(@ScriptDir & "\grey.gif",0,0,$width,$height)
GuiCtrlSetState(-1,$GUI_DISABLE)

; just a text label



gUICtrlCreateButton("gfd", 400, 400)


GUISetState()




While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd
AdlibDisable ()



if $runthis <> "" then 
    if fileexists($launchDir & "\" & $runthis) then 
        beep(1000,50)
        beep(2000,50)
        _ShellExecute($runthis, "", $launchDir)
    EndIf
EndIf

GUIDelete($controlGui)
;fade out png background
for $i = 255 to 0 step -10
    SetBitMap($GUI, $hImage, $i)
next

; Release resources
_API_DeleteObject($hImage)
_GDIP_Shutdown()





; ====================================================================================================

===========================
; Handle the WM_NCHITTEST for the layered window so it can be dragged by clicking anywhere on the image.
; ====================================================================================================

===========================
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
  if ($hWnd = $GUI) and ($iMsg = $WM_NCHITTEST) then Return $HTCAPTION
EndFunc

; ====================================================================================================

===========================
; SetBitMap
; ====================================================================================================

===========================
Func SetBitmap($hGUI, $hImage, $iOpacity)
  Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

  $hScrDC  = _API_GetDC(0)
  $hMemDC  = _API_CreateCompatibleDC($hScrDC)
  $hBitmap = _GDIP_BitmapCreateHBITMAPFromBitmap($hImage)
  $hOld = _API_SelectObject($hMemDC, $hBitmap)
  $tSize   = DllStructCreate($tagSIZE)
  $pSize   = DllStructGetPtr($tSize  )
  DllStructSetData($tSize, "X", _GDIP_ImageGetWidth ($hImage))
  DllStructSetData($tSize, "Y", _GDIP_ImageGetHeight($hImage))
  $tSource = DllStructCreate($tagPOINT)
  $pSource = DllStructGetPtr($tSource)
  $tBlend  = DllStructCreate($tagBLENDFUNCTION)
  $pBlend  = DllStructGetPtr($tBlend)
  DllStructSetData($tBlend, "Alpha" , $iOpacity )
  DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
  _API_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
  _API_ReleaseDC   (0, $hScrDC)
  _API_SelectObject($hMemDC, $hOld)
  _API_DeleteObject($hBitmap)
  _API_DeleteDC ($hMemDC)
EndFunc


; I don't like AutoIt's built in ShellExec. I'd rather do the DLL call myself.
Func _ShellExecute($sCmd, $sArg="", $sFolder = "", $rState = @SW_SHOWNORMAL)
   $aRet = DllCall("shell32.dll", "long", "ShellExecute", _
      "hwnd",   0, _
      "string", "", _
      "string", $sCmd, _
      "string", $sArg, _
      "string", $sFolder, _
      "int",    $rState)
   If @error Then Return 0
       
   $RetVal = $aRet[0]
   If $RetVal > 32 Then
       Return 1
   else  
    Return 0
   EndIf
EndFunc
Link to comment
Share on other sites

  • Moderators

http://www.autoitscript.com/forum/index.ph...st&p=391424

The PNG is the main gui, so you'll create a child to hold the controls, the above is an example.

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...