astuce pour loader un png dans un activx image dans un userform sans api

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
combien de fois la demande est passée sur le forum excel et pas que sur XLD je ne les comptes même plus
en effet loader un png pour faire un bouton plus attrayant que le bouton classique ou même le icon MSO
fait l'object de beaucoup de demandes
je vous ai montré avec mes fonctions perso images avec les api que le wmf était efficace

aujourd'hui comme je travaille sur mes vieux vieux truc avec WIA(librairie Windows Image Aquisition)
j'ai re découvert une alternative au usines api
et voir même le comble!!!!! pourvoir convertir un png en VRAI!!! JPG
et cela en 3 lignes
en effet il suffit de créer un object wia.imagefile (même en late binding ça marche)
ensuite vous loadez l'image dans le wia.imagefile
ensuite vous faite un controlimage.picture=wia.imagefile.ARGBDATA.Picture(largeur de l'image,hauteur de l'image)
et voila terminé vous avez votre PNG affichée dans un control image du userform
et le comble si vous utilisez la fonction savePicture de vba , ben vous pouvez sauver l'image en JPG (LE VRAI!!!! FORMAT JPG [j'ai contrôlé en relecture en binnaire] )

le petit code de démo qui va bien
VB:
Private Sub CommandButton1_Click()
Dim Fichier
Fichier = "C:\Users\patricktoulon\Desktop\icofree.png"
PutPngOnPictureDisp Fichier
End Sub

Sub PutPngOnPictureDisp(f)
Dim img As Object
Set img = CreateObject("Wia.ImageFile")
img.LoadFile f
Set Image1.Picture = img.ARGBData.Picture(img.Width, img.Height)
'SavePicture Image1.Picture, "C:\Users\patricktoulon\Desktop\icofree.jpg"
End Sub
bon le seul inconvénient c'est que contrairement a ma fonction perso CopyXlPicture(api en WMF) il ne garde pas la transparence
mais pour certains travaux ça peut être intéressant
 

Discussions similaires

Réponses
1
Affichages
317
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 371
Messages
2 087 704
Membres
103 646
dernier inscrit
ouattara dad