C# listview按比例显示缩略图
C# 的 listview 控件显示图片不会自动按比例缩放,要实现按比例缩放需要把图片画上去。在 winform 程序中画图,通常都用 Graphics,也是一种效率比较高的显示缩略图方法。
文章将用一个实例说明 C# listview缩略图显示的方法,具体是以缩约图方式显示一个指定文件夹里的所有图片。
C# listview按比例显示缩略图
1、拖一个 listview控件到窗体中,并把 listview1 的 DrawItem 方法设置为 listView1_DrawItem。
2、实现代码如下:
private void imgThum_Load(object sender, EventArgs e)
{
ShowImg(@"G:\");
}
/// <summary>
/// C# listview缩略图
/// </summary>
/// <param name="filePath">图片所在文件夹路径</param>
private void ShowImg(string filePath)
{
this.listView1.OwnerDraw = true;
this.listView1.TileSize = new Size(120, 120);
this.listView1.View = View.Tile;
DirectoryInfo di = new DirectoryInfo(filePath);
FileInfo[] afi = di.GetFiles("*.*");
string temp;
ListViewItem lvi;
for (int i = 0; i < afi.Length; i++)
{
temp = afi[i].Name.ToLower();
if (temp.EndsWith(".jpg"))
{
lvi = new ListViewItem();
lvi.Text = afi[i].Name;
lvi.Tag = afi[i].FullName;
this.listView1.Items.Add(lvi);
}
else if (temp.EndsWith(".gif"))
{
lvi = new ListViewItem();
lvi.Text = afi[i].Name;
lvi.Tag = afi[i].FullName;
this.listView1.Items.Add(lvi);
}
else if (temp.EndsWith(".png"))
{
lvi = new ListViewItem();
lvi.Text = afi[i].Name;
lvi.Tag = afi[i].FullName;
this.listView1.Items.Add(lvi);
}
else if (temp.EndsWith(".bmp"))
{
lvi = new ListViewItem();
lvi.Text = afi[i].Name;
lvi.Tag = afi[i].FullName;
this.listView1.Items.Add(lvi);
}
}
}
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
Bitmap bm = new Bitmap((string)(e.Item.Tag));
e.Graphics.DrawImage(bm, e.Bounds);
e.DrawText();
}
以上代码通过 Visual Studio 2010 测试,可以正确显示缩约图。不过,如果图片比较多,显示慢,可以考虑启用 listview 的 VirtualMode,但 VirtualMode 不支持Tile(平铺视图);也可以用其它语言,如 VC++。
-
相关阅读
- C# listview选择行(多行)
- C# Winform设置焦点focus(text
- C# Winform label自定义大小与居中,文字自动换行
- C# Winform 打开文件夹并选中文件和打开文件
- C# Winform鼠标样式设置方法
- listview修改选中行项的颜色和加加粗字体 Winf
- 解决C# listview多线程调用闪烁问题与注意
- C# 画 Winform Panel边框的两种方法(ControlPain
- C#动态创建listview并添加单击事件
- C# listview添加行或项并设置颜色
- C# Winform button与label
- C# ListView控件显示表格(自适应宽度),添加 Chec