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 :
Vous pouvez afficher un bitmap sur de nombreux contrôles dans Microsoft Forms. Certains contrôles prennent en charge les bitmaps transparents, c'est-à-dire les bitmaps dans lesquels un ou plusieurs couleurs de fond sont transparents. La transparence bitmap n'est contrôlée par aucune propriété de contrôle; elle est contrôlée par la couleur du pixel inférieur gauche de l'image. Microsoft Forms ne fournit pas un moyen de modifier un bitmap et de le rendre transparent; vous devez utiliser un éditeur d'images à cette fin.

Dans Microsoft Forms, les bitmaps sont toujours transparents sur les contrôles suivants:
  • CheckBox
  • CommandButton
  • Label
  • OptionButton
  • ToggleButton
Les images transparentes ont parfois une apparence floue. Si vous n'aimez pas cette apparence, affichez l'image sur un contrôle qui prend en charge les images opaques.

Si vous utilisez un bitmap transparent sur un contrôle qui ne prend pas en charge les bitmaps transparents, le bitmap s'affichera correctement, mais vous ne pourrez pas voir ce qui se cache derrière. Dans Microsoft Forms, les contrôles suivants ne supportent pas les bitmaps transparents:

La fenêtre de formulaire (UserForm')
  • Frame
  • Image
  • MultiPage
En conclusion pour afficher un bitmap avec transparence dans un formulaire , il est préférable d'utiliser un contrôle Label.

LoadTranspPNG.gif


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
704
Réponses
1
Affichages
474
Compte Supprimé 979
C
Réponses
2
Affichages
2 K
Retour