Private Sub filllistboxwithcolors() Me.ListBox1.DrawMode = DrawMode.OwnerDrawFixed Me.ListBox1.ItemHeight = 24 '避免闪烁 Me.ListBox1.BeginUpdate() ListBox1.Items.Clear() Dim pi As Reflection.PropertyInfo For Each pi In GetType(Color).GetProperties(Reflection.BindingFlags.Public Or Reflection.BindingFlags.Static) Me.ListBox1.Items.Add(pi.Name) Next ListBox1.EndUpdate() End Sub Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem Dim rect As Rectangle = e.Bounds '每一项的边框 If e.State And DrawItemState.Selected Then e.Graphics.FillRectangle(SystemBrushes.Window, rect) End If Dim colorname As String = ListBox1.Items(e.Index) Dim b As New SolidBrush(Color.FromName(colorname)) rect.Inflate(-16, -2) e.Graphics.FillRectangle(b, rect) e.Graphics.DrawRectangle(Pens.Black, rect) Dim b2 As Brush If CInt(b.Color.R) + CInt(b.Color.G) + CInt(b.Color.B) > 128 * 3 Then b2 = Brushes.Black Else b2 = Brushes.White End If e.Graphics.DrawString(colorname, Me.ListBox1.Font, b2, rect.X, rect.Y) End Sub |
温馨提示:喜欢本站的话,请收藏一下本站!