用Winform 中的ListView 来显示文件夹下面的图片 ,用缩略图来显示,不用ImageList ,如何实现?

解决方案 »

  1.   

    用listView_DrawItem()来画.
    listview设置:
    this.listView1.OwnerDraw = true;
                this.listView1.TileSize = new System.Drawing.Size(100, 100);
                this.listView1.View = System.Windows.Forms.View.Tile;
           
     ListViewItem l = new ListViewItem();
                l.Tag = "e:\\ppp\\1.jpg";
                this.listView1.Items.Add(l);            l = new ListViewItem();
                l.Tag = "e:\\ppp\\2.jpg";
                this.listView1.Items.Add(l);            l = new ListViewItem();
                l.Tag = "e:\\ppp\\3.jpg";
                this.listView1.Items.Add(l);
     private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
            {
             
               Bitmap b = new Bitmap((string)(e.Item.Tag));
                e.Graphics.DrawImage(b, e.Bounds);        }
     
      

  2.   

    非常感谢 hwking 这样是可以实现图片的显示问题了,但如何把图片的名称也显示出来啊,我用
    ListViewItem l = new ListViewItem();
                l.Text="aaaa";
                l.Tag = "e:\\ppp\\1.jpg";
                this.listView1.Items.Add(l);  却显示不出来,能否再帮忙,谢谢
    我要的功能是,显示文件夹的图片 用户选中一个图片,在按钮事件中得到用户选择图片的名称即可
      

  3.   

     private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
            {
             
               Bitmap b = new Bitmap((string)(e.Item.Tag));
                e.Graphics.DrawImage(b, e.Bounds);
                
                e.DrawText();
            }
      

  4.   

    DrawItem会闪。
    文件很多你的方法会非常慢。
    思路就是VirtualMode ,listview双缓存,预加载,高效的缩略图生成方式(用第三方图像库,蒋晟这么说的)
    lmagelist是必须的。
    不过VirtualMode 不支持平铺视图(Tile)