先上图:

 

C# Winform编程ListBox之添加图标_休闲

这里添加固定的图片的。

代码:

 

  1. private Color RowBackColorAlt=Color.FromArgb(200,200,200);//交替色 
  2. private Color RowBackColorSel = Color.FromArgb(150, 200, 250);//选择项目颜色 
  3.  
  4. public Form1() 
  5.     InitializeComponent();             
  6.     listBox1.DrawMode = DrawMode.OwnerDrawFixed; 
  7.     listBox1.ItemHeight = 24; 
  8.  
  9. private void listBox1_DrawItem(object sender, DrawItemEventArgs e) 
  10.     Brush myBrush = Brushes.Black; 
  11.  
  12.     if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) 
  13.     { 
  14.         myBrush = new SolidBrush(RowBackColorSel); 
  15.     } 
  16.     else if (e.Index % 2 == 0) 
  17.     { 
  18.         myBrush = new SolidBrush(RowBackColorAlt); 
  19.     } 
  20.     else 
  21.     { 
  22.         myBrush = new SolidBrush(Color.White); 
  23.     } 
  24.     e.Graphics.FillRectangle(myBrush, e.Bounds); 
  25.     e.DrawFocusRectangle();//焦点框 
  26.  
  27.     //绘制图标 
  28.     Image p_w_picpath = Image.FromFile("p_w_picpaths/item.png"); 
  29.     Graphics g = e.Graphics; 
  30.     Rectangle bounds = e.Bounds; 
  31.     Rectangle p_w_picpathRect = new Rectangle( 
  32.         bounds.X, 
  33.         bounds.Y, 
  34.         bounds.Height, 
  35.         bounds.Height); 
  36.     Rectangle textRect = new Rectangle( 
  37.         p_w_picpathRect.Right, 
  38.         bounds.Y, 
  39.         bounds.Width - p_w_picpathRect.Right, 
  40.         bounds.Height); 
  41.  
  42.     if (p_w_picpath != null
  43.     { 
  44.         g.DrawImage( 
  45.             p_w_picpath, 
  46.             p_w_picpathRect, 
  47.             0, 
  48.             0, 
  49.             p_w_picpath.Width, 
  50.             p_w_picpath.Height, 
  51.             GraphicsUnit.Pixel); 
  52.     } 
  53.  
  54.     //文本 
  55.     StringFormat strFormat = new StringFormat(); 
  56.     //strFormat.Alignment = StringAlignment.Center; 
  57.     strFormat.LineAlignment = StringAlignment.Center; 
  58.     e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), textRect,strFormat);