| Auteur |
Message |
|
|
 |
 |
| Modérateur |
|
|
Sujet du message: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: 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 = )
|
|
| AutoIt Français |
|
|
 |
 |
| Niveau 6 |
|
|
Inscription: Mer 28 Oct 2009 11:31 Messages: 252 Age: 16
Localisation: Libourne
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: Lun 01 Mar 2010 18:32
|
Super, à tester ! 
|
|
| AutoIt Français |
|
|
 |
 |
| Modérateur |
Inscription: Dim 06 Juil 2008 08:11 Messages: 427
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: 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 = )
|
|
| AutoIt Français |
|
|
 |
 |
| 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
Posté: Jeu 04 Mar 2010 08:16
|
Merci et bravo pour cette UDF, c'est exactement ce dont j'avais besoin
|
|
| AutoIt Français |
|
|
 |
 |
| Modérateur |
Inscription: Dim 06 Juil 2008 08:11 Messages: 427
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: 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 = )
|
|
| AutoIt Français |
|
|
 |
 |
| Niveau 5 |
|
|
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
Posté: 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!
|
|
| AutoIt Français |
|
|
 |
 |
| Niveau 6 |
Inscription: Sam 11 Oct 2008 13:44 Messages: 267
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: Sam 04 Sep 2010 14:32
|
Ca fonctionne , mais je me retrouve avec un fond noir .
|
|
| AutoIt Français |
|
|
 |
 |
| Niveau 5 |
|
|
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
Posté: 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!
|
|
| AutoIt Français |
|
|
 |
 |
| Niveau 6 |
Inscription: Sam 11 Oct 2008 13:44 Messages: 267
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: 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 !
|
|
| AutoIt Français |
|
|
 |
 |
| Niveau 6 |
Inscription: Sam 11 Oct 2008 13:44 Messages: 267
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: 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
|
|
| AutoIt Français |
|
|
 |
 |
| Modérateur |
Inscription: Dim 06 Juil 2008 08:11 Messages: 427
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: 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 = )
|
|
| AutoIt Français |
|
|
 |
 |
| Niveau 5 |
|
|
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
Posté: 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!
|
|
| AutoIt Français |
|
|
 |
 |
| Modérateur |
Inscription: Dim 06 Juil 2008 08:11 Messages: 427
Haut
|
|
|
Sujet du message: Re: [Func] GuiCtrlCreatePic avec tous formats d'images
Posté: 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 = )
|
|