Jump to content

Showing a picture


Recommended Posts

Hello..

I want to make a script that shows a picture without the title bar etc...

I know SplashImage command works, but then i get the title bar.

I want to get a result as the image in the AlphaBlend.au3 example that follows with autoit has, but i'm not very experienced with creating GUI's so I hoped that someone could give me some tips :)

Here is the example (it's in the autoit dir aswell)

#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>

Opt("MustDeclareVars", 1)

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

===========================
; 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 necessary to build this demo
; ====================================================================================================

===========================

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

===========================
; Global constants
; ====================================================================================================

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

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

===========================
; 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)
  SetBitMap($hGUI2, $hImage, GUICtrlRead($iSlider))
EndFunc

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

===========================
; 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 = $hGUI2) 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  = _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, $ULW_ALPHA)
  _WinAPI_ReleaseDC   (0, $hScrDC)
  _WinAPI_SelectObject($hMemDC, $hOld)
  _WinAPI_DeleteObject($hBitmap)
  _WinAPI_DeleteDC  ($hMemDC)
EndFunc

Any help appreciated :)

Link to comment
Share on other sites

Hello..

I want to make a script that shows a picture without the title bar etc...

Any help appreciated :)

Easiest way is to have a Popup style window.

$Gui1 = GUICreate("",400,400,100,100,$WS_POPUP)

Then create your pic to fill the window

Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script.
Link to comment
Share on other sites

Try this.

Place this image in the same directory:

http://www.autoitscript.com/forum/style_im...utoit/logo4.gif

This will display the linked image for 5 seconds before killing itself.

#NoTrayIcon
#include <GUIConstants.au3>
        $ImageThing = GuiCreate("Test", 166, 68, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
        GUICtrlCreatePic("logo4.gif",0,0,166,68, -1  )
            GUISetState()
            $begin = TimerInit()
                While 1
                    $dif = 10 
                    $dif = $dif - 1
                    If TimerDiff($begin) > 5000 Then Exit
                    $guimsg = GUIGetMsg()
                WEnd
Edited by redsleeves
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...