Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
Hello,
pour la transparence voici la réponse venant de Microsoft :
En conclusion pour afficher un bitmap avec transparence dans un formulaire , il est préférable d'utiliser un contrôle Label.



Ami calmant, J.P
 
Dernière édition:
re
bonjour @jurassic pork oui je sais avec le label pas de soucis j'avais trouver la même page que toi
et pour la peine voici les deux versions
et c'est la LoadPngPicture qui va le plus vite


VB:
        Image1.Picture = LoadPngPicture(filetoopen)
        Label3.Picture = LoadPngPicture(filetoopen)
 
'**************************************************************************************************

'1° loader une png dans un control image dans un userform
Function LoadPngPicture(ByVal Filename As String) As StdPicture
    With CreateObject("WIA.ImageFile")
        .LoadFile Filename
        Set LoadPngPicture = .FileData.Picture
    End With
End Function

'**************************************************************************************************
'2° loader une png dans un control image dans un userform version 2
Function LoadPngPicture2(ByVal Filename As String) As StdPicture
    With CreateObject("WIA.ImageFile")
        .LoadFile Filename
        Set LoadPngPicture2 = .ARGBData.Picture(.Width, .Height)
    End With
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
742
Réponses
1
Affichages
580
Compte Supprimé 979
C
Réponses
39
Affichages
5 K
Réponses
5
Affichages
785
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…