3

如何在 vb.net 的表单上显示 48x48 分辨率的图标?我查看了使用 imagelist ,但我不知道如何显示我使用代码添加到列表中的图像以及如何在表单上指定它的坐标。我做了一些谷歌搜索,但没有一个例子真正展示了我需要知道的内容。

4

4 回答 4

7

当您拥有支持 alpha 透明度的图像格式时,ImageList 并不理想(至少以前是这种情况;我最近没有经常使用它们),因此您最好从磁盘上的文件中加载图标或从资源。如果你从磁盘加载它,你可以使用这种方法:

' 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()

更新:如果您希望将图标作为程序集中的嵌入资源,您可以更改 LoadIconFromFile 方法,使其看起来像这样:

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
于 2009-05-27T07:14:09.857 回答
1

您想要一个图片框控件将图像放置在窗体上。

然后,您可以将 Image 属性设置为您希望显示的图像,可以是来自磁盘上的文件、图像列表或资源文件的图像。

假设您有一个名为 pct 的图片框:

pct.Image = Image.FromFile("c:\Image_Name.jpg")  'file on disk

或者

pct.Image = My.Resources.Image_Name 'project resources

或者

pct.Image = imagelist.image(0)  'imagelist
于 2009-05-27T07:00:05.183 回答
0
  Me.Icon = Icon.FromHandle(DirectCast(ImgLs_ICONS.Images(0), Bitmap).GetHicon())
于 2011-05-31T11:41:16.933 回答
0

您可以使用标签控件来做同样的事情。我用一个在图片框控件中的图像上画了一个点。它可能比使用 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)

使用 OnPaint 方法可能是最好的方法。

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
于 2012-09-27T20:03:43.393 回答