2009-05-27 4 views
3

Wie würde ich ein Symbol bei 48x48 Auflösung auf einem Formular in vb.net anzeigen? Ich habe mich mit der Bildliste beschäftigt, aber ich weiß nicht, wie ich das Bild, das ich der Liste hinzufüge, mithilfe von Code anzeigen kann und wie ich seine Koordinaten im Formular angeben kann. Ich habe einige Google-Suche gemacht, aber keines der Beispiele zeigt wirklich, was ich wissen muss.Display-Symbol auf dem Formular in vb.net

Antwort

7

Die Abbildungsliste ist nicht ideal, wenn Sie Bildformate unterstützt Alpha-Transparenz (zumin zumindest war es früher so, ich habe sie in letzter Zeit nicht oft benutzt), also sind Sie wahrscheinlich besser dran f Laden des Symbols aus einer Datei auf der Festplatte oder von einer Ressource. 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 eine eingebettete Ressource in die Assembly haben wollen, können Sie die LoadIconFromFile Methode verändern, so dass es so aussieht, anstatt :

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 
+0

Danke, Ihre Picturebox-Methode hat perfekt funktioniert. – MaQleod

2

Sie wollen eine picturebox Kontrolle das Bild auf dem Formular zu platzieren.

Sie können dann die Image-Eigenschaft auf das Bild, das Sie angezeigt werden sollen, sein, dass aus einer Datei auf der Festplatte, eine Bildliste oder eine Ressourcendatei.

Vorausgesetzt Sie haben eine picturebox genannt pct haben:

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 
0
Me.Icon = Icon.FromHandle(DirectCast(ImgLs_ICONS.Images(0), Bitmap).GetHicon()) 
+2

Willkommen bei Stack Overflow. Bitte erarbeite deine Antwort –

+0

Deine Postarbeit ist großartig für mich! Thx – RicardoBalda

+0

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

0

Sie können ein Label-Steuerelement verwenden, um die gleiche Sache zu tun. Ich benutzte eine, um einen Punkt über ein Bild in einem Bildbox-Steuerelement zu zeichnen. Es kann weniger Aufwand als die Verwendung einer PictureBox sein.

 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 ist möglicherweise der beste Weg, 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