Показать значок на форме в vb.net - PullRequest
3 голосов
/ 27 мая 2009

Как бы я отобразил значок в разрешении 48x48 на форме в vb.net? Я смотрел на использование списка изображений, но я не знаю, как отобразить изображение, которое я добавляю в список, используя код, и как указать его координаты в форме. Я провел поиск в Google, но ни один из примеров не показывает, что мне нужно знать.

Ответы [ 4 ]

7 голосов
/ 27 мая 2009

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
2 голосов
/ 27 мая 2009

Вы хотите, чтобы элемент управления Picturebox поместил изображение в форму.

Затем вы можете установить свойство 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
0 голосов
/ 28 сентября 2012

Вы можете использовать элемент управления меткой, чтобы сделать то же самое. Я использовал один, чтобы нарисовать точку над изображением в элементе управления Picturebox. Это может быть меньше, чем при использовании 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
0 голосов
/ 31 мая 2011
  Me.Icon = Icon.FromHandle(DirectCast(ImgLs_ICONS.Images(0), Bitmap).GetHicon())
...