例如上图的效果文字在上面 背景图在下面 listView1.LargeImageList = imageList1;
//listView1.SmallImageList = imageList1;
for (int j = 0; j <200; j++)
{
ListViewItem lvi = new ListViewItem();
lvi.SubItems[0].Text = "btn"+j;
lvi.ImageIndex = 0; listView1.Items.Add(lvi);
}
//listView1.SmallImageList = imageList1;
for (int j = 0; j <200; j++)
{
ListViewItem lvi = new ListViewItem();
lvi.SubItems[0].Text = "btn"+j;
lvi.ImageIndex = 0; listView1.Items.Add(lvi);
}
ListViewItem item = new ListViewItem("1");
Image image = ConvertToImage("");
imageList1.Images.Add(image);
item.ImageIndex = 1;
listView1.Items.Add(item);
item.SubItems.Add("");
item.SubItems.Add("");
public static byte[] ConvertToBytes(string fileName) {
Image image = Image.FromFile(fileName);
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, image);
byte[] result = new byte[ms.Length];
ms.Position = 0;
ms.Read(result, 0, result.Length);
ms.Close();
return result;
}
// 2、在 listView1_DrawItem 事件中加入 Draw Item 的代码
// 在绘制的过程中还要判断很多参数
// 例如:当前的视图、当前视图对应的 ImageList、当前项的文本对齐、图片对齐、背景色等等private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
e.DrawDefault = false; SizeF sizef =
e.Graphics.MeasureString(e.Item.Text, e.Item.Font); Graphics g = e.Graphics; Image image =
e.Item.ListView.LargeImageList.Images[e.Item.ImageIndex]; g.DrawImage(
image,
e.Bounds.Left + (e.Bounds.Width - image.Width) / 2,
e.Bounds.Top + (e.Bounds.Height - image.Height) / 2,
image.Height,
image.Width); g.DrawString(
e.Item.Text,
e.Item.Font,
new SolidBrush(e.Item.ForeColor),
e.Bounds.Left + (e.Bounds.Width - sizef.ToSize().Width) / 2,
e.Bounds.Top + (e.Bounds.Height - sizef.ToSize().Height) / 2);
}// 最头疼的是,如果要实现完整的 Item 功能
// 用户还需要根据 State 判断 Item 的当前状态进行绘制
switch (e.State)
{
case ListViewItemStates.Checked: // 已选中
case ListViewItemStates.Focused: // 拥有焦点
case ListViewItemStates.Grayed: // 禁用
case ListViewItemStates.Selected: // 已选定
case ListViewItemStates.Hot: // 位于鼠标指针下
case ListViewItemStates.Indeterminate: // 不确定状态
case ListViewItemStates.Marked: // 被标记
...
}// 那样是会死人的 :(