[..] Images dans une GUI PNG

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

[..] Images dans une GUI PNG

#1

Message par Habibsbib »

Bonjour.

Je suis sur un projet, et j'ai créé une GUI PNG, du style "Alpha Blend". Voilà mon code :

Code : Tout sélectionner

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


Global Const $AC_SRC_ALPHA      = 1
Global $hGUI1, $hGUI2, $iLabel1, $iLabel2, $iSlider, $hImage

$hGUI2 = GUICreate("Red Tool", 400, 400, -1, -1, -1, $WS_EX_LAYERED, $hGUI1)

; Create GUI
GUISetState()

; Load layered image
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\fond.png")
SetBitMap($hGUI2, $hImage, 255)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUISetState()

; Loop until user exits
do
until GUIGetMsg() =$GUI_EVENT_CLOSE

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

; Release resources
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()


; ===============================================================================================================================
; 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

 
Ben...pour l'instant tout marche super bien, la PNG s'affiche, etc.. Mais quand j'ai voulu y intégrer une image (dans la GUI je veux dire). Mais ça n'a pas marché. La GUI s'affiche toute seule, sans l'image que j'essaye d'y intégrer. Voilà des images plus explicites :

avant l'ajout :
Image 1.jpg
après l'ajout :
Image 2.jpg
Comment faire pour charger une "Pic" dans la GUI sans la perturber ? Merci de votre aide !
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [..] Images dans une GUI PNG

#2

Message par Habibsbib »

C'est SI dur que ça :roll:
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Images dans une GUI PNG

#3

Message par Tlem »

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre