Page 1 sur 1

[R] Intégration d'une image dans ma form

Posté : lun. 18 oct. 2010 15:39
par peuchere83
Bonjour à tous,

je sèche sur quelque chose de tout bête : je n'arrive pas à intégrer une image sur ma form.
J'arrive à insérer certaine image mais pas celle en pièce jointe et je ne comprends pas pourquoi.
j'utilise la commande GUICtrlCreatePic.
Voici mon code de test :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

Global $gui, $guiPos, $pic, $picPos

Example1()

;----- example 1 ----
Func Example1()
    Local $n, $msg
    
    GUICreate("My GUI picture", 950, 900, -1, -1, $WS_SIZEBOX + $WS_SYSMENU)  ; will create a dialog box that when displayed is centered

    $n = GUICtrlCreatePic(@DesktopDir"\test.jpg", 0, 0, 800, 800, "", "")

    GUISetState()

    ; Run the GUI until the dialog is closed
    While 1
        $msg = GUIGetMsg()
        
        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd


    ; resize the control
    $n = GUICtrlSetImage($n, @DesktopDir"\test.jpg")
    ; Run the GUI until the dialog is closed
    While 1
        $msg = GUIGetMsg()
        
        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    
    GUIDelete()
EndFunc   ;==>Example1
Résultat : Mon image n'apparaît pas :evil:
Par avance merci.

Re: [..] Intégration d'une image dans ma form

Posté : lun. 18 oct. 2010 17:36
par BlueCore
Salut peuchere83.
Il fallait réorganiser ton image, tes traits en vrac, en traits droits.
:lol: je rigole.

Ton image n'est pas un *.jpg mais un format *.png renommé.
Fait attention.

- BlueCore

Re: [..] Intégration d'une image dans ma form

Posté : lun. 18 oct. 2010 17:41
par peuchere83
Salut BlueCore et merci pour l'info.

Mais pourrais tu m'en dire un peu plus : c'est une image que j'ai eu sous format (plus exactement avec extension) jpg et que j'ai réenregistée sous Photoshop.

Comment vois tu que c'était un png à la base ? :shock:

Re: [..] Intégration d'une image dans ma form

Posté : mar. 19 oct. 2010 11:39
par peuchere83
Suite à la remarque de BlueCore,

j'ai donc décidé d'utiliser la fonction suivante qui accepte le png :

Code : Tout sélectionner

#include<gdiplus.au3>

; Func PngGuiCreatePic($src, $x, $y, $scale = 1, $alt = "",$gdi = 1)
Func PngGuiCreatePic($src, $x, $y, $scale = 1, $alt = "")
    Local $gdi_state = $ghGDIPDll
    If $ghGDIPDll = 0 Then _GDIPlus_Startup()
    $hImage2 = _GDIPlus_ImageLoadFromFile($src)
    $ImageHeight = (_GDIPlus_ImageGetHeight($hImage2)) * $scale
    $ImageWidth = (_GDIPlus_ImageGetWidth($hImage2)) * $scale

    If $scale <> 1 Then
        $hBitmap = _WinAPI_CreateBitmap($ImageWidth, $ImageHeight, 1, 32)
        $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
        $hgraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
        _GDIPlus_GraphicsDrawImageRect($hgraphic, $hImage2, 0, 0, $ImageWidth, $ImageHeight)
        $hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage1)
        _WinAPI_DeleteObject($hBitmap)
        _GDIPlus_ImageDispose($hImage1)
        _GDIPlus_GraphicsDispose($hgraphic)
    Else
        Local _
                $hBitmap = _GDIPlus_BitmapCreateFromFile($src), _
                $hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)


    EndIf

    $pic = GUICtrlCreatePic("", $x, $y, $ImageWidth, $ImageHeight)
    If $alt <> "" Then GUICtrlSetTip($pic, $alt)
    GUICtrlSendMsg($pic, 0x0172, 0, $hBitmap2)
If $gdi_state = 0 Then _GDIPlus_Shutdown()
    Return $pic
EndFunc   ;==>PngGuiCreatePic
Par contre je n'arrive pas à l'utiliser dans mon code d'exemple dans mon 1er post.
En outre, lors de l'exécution, une erreur de déclaration de variables apparaît sur cette ligne : Local $gdi_state = $ghGDIPDll

Quelqu'un a t'il une explication ?

Par avance merci

Re: [..] Intégration d'une image dans ma form

Posté : mar. 19 oct. 2010 11:50
par peuchere83
De plus, je viens de tester mon image avec TrID et c'est bien une image jpeg.
Je ne comprends pas pourquoi guictrlcreatepic n'arrive pas à l'utiliser.

Re: [..] Intégration d'une image dans ma form

Posté : mar. 19 oct. 2010 12:10
par Yogui
Bonjour,

Je suis plus étonné par le format de l'image en faite si je l'enregistre en BMP puis la repasse en JPG avec MsPaint elle passe ..

Elle a été créée avec photoshop CS3 que je n'ai pas pour tester mais au vu de ce que j'ai trouvé sur google il faudrait tester l'enregistrant pour le web Fichier >Enregistrer pour le Web

Re: [..] Intégration d'une image dans ma form

Posté : mar. 19 oct. 2010 14:12
par peuchere83
J'ai trouvé !!!!!

En fait mes images étaient enregistrées en CMJN. En les passant en RVB, je peux maintenant les insérer sur ma form.

Merci beaucoup pour votre aide à tous.