3

vb.net のフォームに 48x48 の解像度でアイコンを表示するにはどうすればよいですか? imagelist を使用して見ましたが、コードを使用してリストに追加した画像を表示する方法と、フォーム上の座標を指定する方法がわかりません。私はいくつかのグーグル検索を行いましたが、私が知る必要があることを実際に示している例はありません.

4

4 に答える 4

7

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

ラベルコントロールを使用して同じことを行うことができます。ピクチャーボックスコントロールの画像の上にドットを描くために使用しました。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 に答える
0
  Me.Icon = Icon.FromHandle(DirectCast(ImgLs_ICONS.Images(0), Bitmap).GetHicon())
于 2011-05-31T11:41:16.933 に答える