stopsoftwarepatents.eu petition banner

AutoIt Français

Communauté Francophone AutoIt
* Connexion   * M’enregistrer

Heures au format UTC + 1 heure


Règles du forum

Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 
Auteur Message
Hors ligne
Modérateur
Modérateur
Inscription: Dim 06 Juil 2008 08:11
Messages: 427

Dernier message
Sujet du message: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Lun 01 Mar 2010 18:20 

Voilà une petite fonction tirée de mon udf ( et légèrement modifiée ) qui agit de façon semblable à GuiCtrlCreatePic mais
vous permet d'afficher les formats d'images non supportés par cette dernière (comme les *.png)

$src = chemin du fichier
$x = position X du contrôle
$y = position Y du contrôle
$scale = 1 ratio d'agrandissement ou de réduction de l'image ( un ratio de 1 = dimensions de l'image)
$alt = "texte à afficher lors du survol de l'image"


* Scale n'est pas parfait et si vous changez la grandeur de l'image, il est possible qu'une "ombre" apparaisse sur l'image.
Si vous en connaissez la cause, n'hésitez pas à m'en faire part. Si laissé à 1, il n'y a aucun problème.
Code
#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
 



Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )

 Profil  
 
AutoIt Français
Hors ligne
Niveau 6
Niveau 6
Avatar de l’utilisateur
Inscription: Mer 28 Oct 2009 11:31
Messages: 252
Age: 16

Localisation: Libourne
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Lun 01 Mar 2010 18:32 

Super, à tester ! :lol:

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Inscription: Dim 06 Juil 2008 08:11
Messages: 427
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Jeu 04 Mar 2010 02:05 

À noter :

Si l'image a de la transparence et que le paramètre $scale <> 1,
la transparence sera remplacée par un fond noir. (À ce moment, il vaut mieux
modifier la taille de l'image à utiliser plutôt que de toucher à ce paramètre.



Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Inscription: Lun 22 Juin 2009 13:54
Messages: 54
Age: 40

Localisation: Clermont-ferrand
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Jeu 04 Mar 2010 08:16 

Merci et bravo pour cette UDF, c'est exactement ce dont j'avais besoin

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Inscription: Dim 06 Juil 2008 08:11
Messages: 427
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Mer 14 Juil 2010 11:41 

14 juillet 2010
Fonction améliorée par l'ajout de la gestion automatique de gdiplus.



Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )

 Profil  
 
AutoIt Français
Hors ligne
Niveau 5
Niveau 5
Avatar de l’utilisateur
Inscription: Lun 19 Oct 2009 03:04
Messages: 156
Age: 20

Localisation: Algérie
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Sam 04 Sep 2010 05:19 

N'est elle pas mieux comme cela! (J'ai mis ; ### juste devant les modifications)
Code
#include-once
#include <GDIPlus.au3>

Func PngGuiCreatePic($src, $x, $y, $w = -1, $h = -1, $alt = "")
    Local $gdi_state = $ghGDIPDll

If $ghGDIPDll = 0 Then _GDIPlus_Startup()

    $hImage2 = _GDIPlus_ImageLoadFromFile($src)

    If $w <> -1 Or $h <> -1 Then
        $ImageHeight = $h ; ###
        $ImageWidth = $w ; ###

        $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
        $ImageHeight = _GDIPlus_ImageGetHeight($hImage2) ; ###
        $ImageWidth = _GDIPlus_ImageGetWidth($hImage2) ; ###

        Local $hBitmap, $hBitmap2
        $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


Comment gérer la transparence si on donne une taille différente à l'image!???



D'oh! un donut! mmmmmmmmmmm o pinéz que c'est boooon!

 Profil  
 
AutoIt Français
Hors ligne
Niveau 6
Niveau 6
Inscription: Sam 11 Oct 2008 13:44
Messages: 267
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Sam 04 Sep 2010 14:32 

Ca fonctionne , mais je me retrouve avec un fond noir .

 Profil  
 
AutoIt Français
Hors ligne
Niveau 5
Niveau 5
Avatar de l’utilisateur
Inscription: Lun 19 Oct 2009 03:04
Messages: 156
Age: 20

Localisation: Algérie
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Dim 05 Sep 2010 17:30 

Tu as un fond noir quand tu redimensionne l'image, pour ne pas faire cela, tu mets $w et $h à -1 (par défaut), c'est équivalent à un $scale à 1

J'ai changer la méthode du scale pour la taille directement car je pense que c'est plus pratique pour bien faire coller précisement une image dans un GUI.

Je cherche toujours pour la transparence, si quelqu'un à une réponse...



D'oh! un donut! mmmmmmmmmmm o pinéz que c'est boooon!

 Profil  
 
AutoIt Français
Hors ligne
Niveau 6
Niveau 6
Inscription: Sam 11 Oct 2008 13:44
Messages: 267
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Dim 05 Sep 2010 18:09 

C'est parfait pour moi , j'ai juste reduit mes images à la taille que je souhaitais ce qui me permet de conserver w=-1 et h=-1.

Comment faire pour cacher l'image afficher , avec une image vide ?

Avec cette ligne:
$Pic = PngGuiCreatePic(@ScriptDir&"\pictures\30.png", 560, 0, -1, -1, $alt = "IMAGE")

Je ne vois aucun tooltip s'afficher!

Merci pour cette fonction trés sympa !

 Profil  
 
AutoIt Français
Hors ligne
Niveau 6
Niveau 6
Inscription: Sam 11 Oct 2008 13:44
Messages: 267
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Mar 07 Sep 2010 17:17 

Serait il possible de modifier cette fonction afin de pouvoir afficher une image avec une rotation de 0 à 359° ?

Merci

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Inscription: Dim 06 Juil 2008 08:11
Messages: 427
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Mer 08 Sep 2010 00:34 

@matwachich

J'avais pensé à le faire comme ça en premier mais j'ai choisi "scale" afin de pouvoir modifier la taille de l'image
facilement sans perdre les proportions (et sans avoir à faire les calculs manuellement).

Ceci dit, utiliser $w et $h au lieu de $scale est une alternative tout à fait valable.


@Pierrotm777


Tu as mis $alt="IMAGE" essaie avec seulement "IMAGE" et ça devrait fonctionner.



Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )

 Profil  
 
AutoIt Français
Hors ligne
Niveau 5
Niveau 5
Avatar de l’utilisateur
Inscription: Lun 19 Oct 2009 03:04
Messages: 156
Age: 20

Localisation: Algérie
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Mer 08 Sep 2010 00:41 

Ok j'attend!
Et si t'as un truc pour la transparence...



D'oh! un donut! mmmmmmmmmmm o pinéz que c'est boooon!

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Inscription: Dim 06 Juil 2008 08:11
Messages: 427

Haut
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
MessagePosté: Mer 08 Sep 2010 01:23 

Je vais voir ce que je peux faire.

J'ai bien une idée pour la transparence.

Un autre de mes projets (duquel cette fonction a été créée) permet d'ajuster la
transparence d'une image servant de GUI.

Cependant, l'UDF n'étant plus à jour et comportant quelques failles toujours non-réglées...
J'essaierai de voir si je peux arriver à un résultat satisfaisant dès que j'aurai le temps.


Pour faire une rotation, le moyen le plus simple serait la mise en application de _GDIPlus_MatrixRotate().
Mes études ne me laisse pas vraiment de temps pour autoit de ces jours-ci mais si je parviens à un résultat,
je le publierai ici.



Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )

 Profil  
 
Afficher les messages postés depuis:  Trier par  

Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 

Heures au format UTC + 1 heure


Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  

AutoIt Français
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Sniper_Blue phpBB-3.0 Style © 2007 Sniper_E
Traduction par: phpBB-fr.com