Comment afficher une icône à une résolution 48x48 sur un formulaire dans vb.net? J'ai regardé en utilisant l'imagelist, mais je ne sais pas comment afficher l'image que j'ajoute à la liste en utilisant du code et comment spécifier ses coordonnées sur le formulaire. J'ai fait des recherches sur google mais aucun des exemples ne montre vraiment ce que j'ai besoin de savoir.Afficher l'icône sur le formulaire dans vb.net
Répondre
Le ImageList n'est pas idéal lorsque vous avez des formats d'image supportant la transparence alpha (à au moins, c'était le cas, je ne les ai pas beaucoup utilisé récemment), donc vous êtes probablement mieux f chargement de l'icône à partir d'un fichier sur le disque ou d'une ressource. Si vous chargez à partir du disque, vous pouvez utiliser cette approche:
' Function for loading the icon from disk in 48x48 size '
Private Function LoadIconFromFile(ByVal fileName As String) As Icon
Return New Icon(fileName, New Size(48, 48))
End Function
' code for loading the icon into a PictureBox '
Dim theIcon As Icon = LoadIconFromFile("C:\path\file.ico")
pbIcon.Image = theIcon.ToBitmap()
theIcon.Dispose()
' code for drawing the icon on the form, at x=20, y=20 '
Dim g As Graphics = Me.CreateGraphics()
Dim theIcon As Icon = LoadIconFromFile("C:\path\file.ico")
g.DrawIcon(theIcon, 20, 20)
g.Dispose()
theIcon.Dispose()
Mise à jour: si vous voulez au lieu d'avoir l'icône comme une ressource intégrée dans votre assemblée, vous pouvez modifier la méthode LoadIconFromFile afin qu'il ressemble à ce lieu :
Private Function LoadIconFromFile(ByVal fileName As String) As Icon
Dim result As Icon
Dim assembly As System.Reflection.Assembly = Me.GetType().Assembly
Dim stream As System.IO.Stream = assembly.GetManifestResourceStream((assembly.GetName().Name & ".file.ico"))
result = New Icon(stream, New Size(48, 48))
stream.Dispose()
Return result
End Function
Vous souhaitez un contrôle de zone de stockage pour placer l'image sur le formulaire.
Vous pouvez ensuite définir la propriété Image sur l'image que vous souhaitez afficher, que ce soit à partir d'un fichier sur le disque, d'une liste d'images ou d'un fichier de ressources.
En supposant que vous avez un picturebox appelé pct:
pct.Image = Image.FromFile("c:\Image_Name.jpg") 'file on disk
ou
pct.Image = My.Resources.Image_Name 'project resources
ou
pct.Image = imagelist.image(0) 'imagelist
Me.Icon = Icon.FromHandle(DirectCast(ImgLs_ICONS.Images(0), Bitmap).GetHicon())
Bienvenue dans Stack Overflow. S'il vous plaît élaborer votre réponse –
Votre poste fonctionne très bien pour moi! Thx – RicardoBalda
Ceci est vraiment inutile. Une ligne sans rien expliqué et le code donne des erreurs de syntaxe dans Visual Basic. Sommes-nous censés lire dans votre esprit pour utiliser cette réponse? (-1) – thebunnyrules
Vous pouvez utiliser un contrôle d'étiquette pour faire la même chose. J'en ai utilisé un pour dessiner un point sur une image dans un contrôle de la boîte à images. Il pourrait être moins lourd que d'utiliser un PictureBox.
Dim label As Label = New Label()
label.Size = My.Resources.DefectDot.Size
label.Image = My.Resources.DefectDot ' Already an image so don't need ToBitmap
label.Location = New Point(40, 40)
DefectPictureBox.Controls.Add(label)
L'utilisation de la méthode OnPaint pourrait être le meilleur moyen de le faire.
Private Sub DefectPictureBox_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DefectPictureBox.Paint
e.Graphics.DrawIcon(My.Resources.MyDot, 20, 20)
End Sub
Merci, votre méthode picturebox a parfaitement fonctionné. – MaQleod