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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
peuchere83
Niveau 5
Niveau 5
Messages : 169
Enregistré le : mer. 17 déc. 2008 10:50
Status : Hors ligne

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

#1

Message 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.
Fichiers joints
test.jpg
Modifié en dernier par peuchere83 le mar. 19 oct. 2010 14:12, modifié 1 fois.
Tous biens que tu possèdes est un souci qui te retient.
Skippy est là pour t'enlever tous tes soucis.
Avatar du membre
BlueCore
Niveau 4
Niveau 4
Messages : 73
Enregistré le : sam. 04 sept. 2010 09:55
Status : Hors ligne

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

#2

Message 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
Fichiers joints
test.jpg
test.jpg (7.5 Kio) Vu 952 fois
Avatar du membre
peuchere83
Niveau 5
Niveau 5
Messages : 169
Enregistré le : mer. 17 déc. 2008 10:50
Status : Hors ligne

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

#3

Message 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:
Tous biens que tu possèdes est un souci qui te retient.
Skippy est là pour t'enlever tous tes soucis.
Avatar du membre
peuchere83
Niveau 5
Niveau 5
Messages : 169
Enregistré le : mer. 17 déc. 2008 10:50
Status : Hors ligne

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

#4

Message 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
Tous biens que tu possèdes est un souci qui te retient.
Skippy est là pour t'enlever tous tes soucis.
Avatar du membre
peuchere83
Niveau 5
Niveau 5
Messages : 169
Enregistré le : mer. 17 déc. 2008 10:50
Status : Hors ligne

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

#5

Message 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.
Tous biens que tu possèdes est un souci qui te retient.
Skippy est là pour t'enlever tous tes soucis.
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

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

#6

Message 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
Avatar du membre
peuchere83
Niveau 5
Niveau 5
Messages : 169
Enregistré le : mer. 17 déc. 2008 10:50
Status : Hors ligne

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

#7

Message 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.
Tous biens que tu possèdes est un souci qui te retient.
Skippy est là pour t'enlever tous tes soucis.
Répondre