Me revoilà
J'ai une image qui s'affiche dans une GUI et quand je clique 2 fois sur l'icone dans la barre des tâches l'image se déforme et je ne comprend pas du tout pourquoi.
Pourriez-vous, s'il vous plaît, m'aider ?
Merci.
Précision : Code allégé pour le forum, je n'ai laissé que le minimum, normalement l'image change suivant la sélection dans un menu déroulant. Plusieurs tailles d'images possible.
Code : Tout sélectionner
#include <Array.au3>
#include <AutoItConstants.au3>
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <file.au3>
#include <FontConstants.au3>
#include <GDIPlus.au3>
#include <GuiComboBox.au3>
#include <GuiConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiEdit.au3>
#include <GuiScrollBars.au3>
#include <GuiStatusBar.au3>
#include <Math.au3>
#include <MsgBoxConstants.au3>
#include <ScrollBarConstants.au3>
#include <StaticConstants.au3>
#include <TrayConstants.au3>
#include <StringConstants.au3>
#include <WindowsConstants.au3>
;~ DECLARATION DES VARIABLES GLOBALES
Global $hImage, $hGraphic, $aArray, $iRows, $iCols
;~ CREATION DE LA FENETRE PRINCIPALE
Global $MyTabsGui = GUICreate("GUI", 900, 600, -1, -1, -1, $WS_EX_TOOLWINDOW + $WS_EX_WINDOWEDGE + $WS_EX_APPWINDOW) ; FENETRE
TraySetState($TRAY_ICONSTATE_SHOW)
GUISetBkColor($COLOR_WHITE) ; FOND BLANC
;~ CREATION DU BUTTON QUITTER
$idButtonClose = GUICtrlCreateButton("Quitter", 858, 1, 40, 40, $BS_ICON)
GUICtrlSetImage(-1, "shell32.dll", 28)
;~ CREATION EMPLACEMENT IMAGE LOGO BAND
Local $pic = GUICtrlCreateLabel("", 50, 1, 350, 39, $SS_BITMAP)
GUICtrlSetBkColor(-1, $COLOR_WHITE)
GUISetState(@SW_SHOW, $MyTabsGui)
SetImageBand() ; FUNC QUI AFFICHE LE LOGO DE L'ARTISTE
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
_do_exit_stuff()
Case $msg = $idButtonClose
ExitLoop
EndSelect
WEnd
Func _do_exit_stuff()
; CE QUE JE VEUX QUAND LE PROGRAMME SE FERME
Exit
EndFunc ;==>_do_exit_stuff
;~ FUNC QUI AFFICHE LE LOGO DE L'ARTISTE DANS LA GUI
Func SetImageBand()
;~ AFFICHE LE LOGO
$file = @ScriptDir & "\ACDC-Logo-Band.png"
If FileExists($file) = 0 Then
GUICtrlSendMsg($pic, $STM_SETIMAGE, $IMAGE_BITMAP, 0) ; supprime l'image si elle existe
Return SetError(1)
EndIf
$img = ADD_image($file)
;~ MsgBox(0, "handle Hbitmap existe", $img)
$hb = GUICtrlSendMsg($pic, $STM_SETIMAGE, $IMAGE_BITMAP, $img)
If $hb Then _WinAPI_DeleteObject($hb)
_WinAPI_DeleteObject($img)
EndFunc ;==>SetImageBand
Func ADD_image($sFile) ;crer un Hbitmap selon chemin
_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile($sFile) ; charge image
$W = _GDIPlus_ImageGetWidth($hBitmap)
$H = _GDIPlus_ImageGetHeight($hBitmap)
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;crée un graphic selon l'image
_GDIPlus_GraphicsSetCompositingQuality($hGraphic, 2) ;améliore la qualité non indispensable
_GDIPlus_GraphicsSetInterpolationMode($hGraphic, 7) ;améliore la qualité non indispensable
_GDIPlus_GraphicsSetSmoothingMode($hGraphic, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;améliore la qualité non indispensable
_GDIPlus_GraphicsDrawImageRectRect($hGraphic, $hBitmap, 0, 0, $W, $H, 0, 0, $W, $H) ;dessine l'image dans le graphic
$hBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) ;crée un Hbitmap adaptable au menu à partir du bitmap
_GDIPlus_BitmapDispose($hBitmap) ;nettoie
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Return $hBMP ;retourne le handle du Hbitmap
EndFunc ;==>ADD_image