3 Stimmen

Icon auf einem Formular in vb.net anzeigen

Wie würde ich ein Symbol bei 48x48 Auflösung auf ein Formular in vb.net anzeigen? Ich schaute auf die Verwendung von imagelist, aber ich weiß nicht, wie das Bild anzuzeigen, dass ich die Liste mit Code hinzufügen und wie man es Koordinaten auf dem Formular angeben. Ich habe einige Google-Suche, aber keines der Beispiele wirklich zeigen, was ich wissen muss.

7voto

Fredrik Mörk Punkte 151006

Die ImageList ist nicht ideal, wenn Sie Bildformate haben, die Alphatransparenz unterstützen (zumindest war das früher der Fall; ich habe sie in letzter Zeit nicht mehr oft verwendet), so dass es wahrscheinlich besser ist, das Symbol aus einer Datei auf der Festplatte oder aus einer Ressource zu laden. Wenn Sie es von der Festplatte laden, können Sie diesen Ansatz verwenden:

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

Update: Wenn Sie stattdessen das Symbol als eingebettete Ressource in Ihrer Assembly haben möchten, können Sie die LoadIconFromFile-Methode so ändern, dass sie stattdessen wie folgt aussieht:

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

1voto

Pondidum Punkte 11289

Sie möchten ein Picturebox-Steuerelement, um das Bild auf dem Formular zu platzieren.

Sie können dann die Eigenschaft Bild auf das Bild setzen, das Sie anzeigen möchten, sei es aus einer Datei auf der Festplatte, einer Bildliste oder einer Ressourcendatei.

Angenommen, Sie haben einen Bildrahmen namens pct:

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

oder

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

oder

pct.Image = imagelist.image(0)  'imagelist

0voto

user707407 Punkte 25
  Me.Icon = Icon.FromHandle(DirectCast(ImgLs_ICONS.Images(0), Bitmap).GetHicon())

2 Stimmen

Willkommen bei Stack Overflow. Bitte erläutern Sie Ihre Antwort

0 Stimmen

Das ist wirklich nicht hilfreich. Eine Zeile, in der nichts erklärt wird, und der Code gibt in Visual Basic Syntaxfehler aus. Sollen wir Ihre Gedanken lesen, um diese Antwort nutzen zu können? (-1)

0 Stimmen

Das funktioniert perfekt. Ich änderte einfach die ...Images(0) in My.Resources.mypngfile, und es funktionierte wie ein Zauber.

0voto

Ron Carter Punkte 51

Sie können ein Label-Steuerelement verwenden, um das Gleiche zu tun. Ich habe eines verwendet, um einen Punkt über ein Bild in einem Picturebox-Steuerelement zu zeichnen. Es könnte weniger Aufwand bedeuten als die Verwendung einer 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)

Die Verwendung der OnPaint-Methode könnte der beste Weg sein, dies zu tun.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X