Private Sub listBox1_DrawItem ( ByVal sender As Object , ByVal e As System.Windows.Forms.DrawItemEventArgs ) Handles listBox1.DrawItem Dim datas As String ( ) = sData Dim rc As RectangleF = New RectangleF ( e.Bounds.X + 1 , e.Bounds.Y + 1 , e.Bounds.Width - 5 , e.Bounds.Height - 3 ) Dim rc1 As Rectangle = New Rectangle ( e.Bounds.X + 1 , e.Bounds.Y + 1 , e.Bounds.Width - 5 , e.Bounds.Height - 3 ) e.DrawBackground ( ) '在选定项目上绘制选定背景色 'e.DrawFocusRectangle ( ) Dim sf As StringFormat = New StringFormat ( ) sf.Alignment = StringAlignment.Center '设定ListBox中项目名称的在矩形区域的排列对齐方式 e.Graphics.DrawRectangle ( New Pen ( New SolidBrush ( System.Drawing.Color.Black ) , 1 ) , rc1 ) '以线条粗度为1,黑色画笔对绘制ListBox中的每一个项目的边框 e.Graphics.DrawString ( sData ( e.Index ) , New Font ( FontFamily.GenericSansSerif , 14 , FontStyle.Bold ) , New SolidBrush ( sColorData ( e.Index ) ) , rc , sf ) ' 以指定的字体大小、类型、颜色绘制ListBox项目名称 Dim useImage As Image = Nothing '创建、初始化一个Image实例 '以下是代码是在ListBox上绘制图片 If ( datas ( e.Index ) = "红色" ) Then useImage = img_fileopen End If If ( datas ( e.Index ) = "蓝色" ) Then useImage = img_close End If If ( datas ( e.Index ) = "黄色" ) Then useImage = img_exit End If If ( datas ( e.Index ) = "绿色" ) Then useImage = img_security End If If ( datas ( e.Index ) = "黄绿色" ) Then useImage = img_network End If If ( datas ( e.Index ) = "灰色" ) Then useImage = img_about End If
If ( useImage Is Nothing ) = False Then Dim sz As SizeF = New SizeF sz = useImage.PhysicalDimension ( ) '获取此Image实例的宽度和高度。 e.Graphics.DrawImage ( useImage , e.Bounds.X + 5 , CInt ( ( e.Bounds.Bottom + e.Bounds.Top ) / 2 - sz.Height / 2 ) ) '在制定的位置按照原始大小绘制图片 End If End Sub