当前位置:首页 > Windows程序 > 正文

C# L该系统的应用istView简单的图像浏览器

2021-03-26 Windows程序

        最近有同学问我怎么用ListView加载图像列表,在...前面"C#系统中的应用"于TreeView+ListView+ContextMenuStrip控件实现树状图显示磁盘文件夹,并在ListView中显示文件的具体信息.这里准备简介下给同学讲述的怎样使用ListView+ImageList控件实现简单的图片浏览器知识.
       第一步 设计界面框架例如以下图所看到的,同一时候加入ImageList控件(不可见)

技术分享


        注意:设置ListView控件的Anchor属性为Top,Bottom,Right;设置PictureBox的Anchor属性为上下左右.
       第二步 使用OpenFileDialog控件打开显示图片

//打开图片 private void button1_Click(object sender, EventArgs e) { //设置打开文件控件 OpenFileDialog openfile = new OpenFileDialog(); openfile.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF);BMP文件(*.BMP);PNG文件(*.PNG)|*.jpg;*.jpeg;*.gif;*.bmp;*.png"; openfile.FilterIndex = 1; //当前选定索引 openfile.RestoreDirectory = true; openfile.FileName = ""; //对话框选择确定按钮 if (openfile.ShowDialog() == DialogResult.OK) { //FromFile从指定的文件创建Image pictureBox1.Image = Image.FromFile(openfile.FileName); //图片被拉伸或收缩适合pictureBox大小 pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; } }

        图片显示效果例如以下图所看到的,须要注意的是在使用FromFile显示图片,可能图片全屏显示时会出现仅仅出现部分图片现象,我设置图片为可拉伸或收缩StretchImage模式.

技术分享


       第三步 显示图片列表至ListView控件中
        主要通过控件FolderBrowserDialog控件打开目录,同一时候获取目录的路径;在通过GetFiles("*.jpg")函数获取jpg格式图片,并获取目录中文件添加至ImageList中,设置ListView的View属性格式为LargeIcon大图标格式显示.

//加入命名空间 using System.IO;                   //Directory文件夹 using System.Diagnostics;          //Stopwatch显示时间 //定义变量 private string folderDirPath; //图片文件夹地址 private string picDirPath = null; //图片路径 private List<string> imagePathList = new List<string>(); //获取列表图片路径 private int index; //获取选中列表图片序号 //ListView和imageList显示图片列表 private void button2_Click(object sender, EventArgs e) { try { //打开选择文件夹对话框 FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); DialogResult result = folderBrowserDialog.ShowDialog(); if (result == DialogResult.OK) { //获取用户选择的文件夹路径 this.folderDirPath = folderBrowserDialog.SelectedPath; //调用自己定义函数显示图片列表至ListView控件 ShowPicture(); } else if (result == DialogResult.Cancel) { MessageBox.Show("取消显示图片列表"); } } catch (Exception msg) { //报错提示 未将对象引用设置到对象的实例 throw msg; } } //显示图片列表至ListView控件 private void ShowPicture() { //提供一种方法測试执行时间 開始计算 //參考资料: Stopwatch sw = new Stopwatch(); sw.Start(); //获取文件夹与子文件夹 DirectoryInfo dir = new DirectoryInfo(folderDirPath); //获取当前文件夹JPG文件列表 GetFiles获取指定文件夹中文件的名称(包含其路径) FileInfo[] fileInfo = dir.GetFiles("*.jpg"); //防止图片失真 //參考资料: (博客中引用) this.imageList1.ColorDepth = ColorDepth.Depth32Bit; for (int i = 0; i < fileInfo.Length; i++) { //获取文件完整文件夹 picDirPath = fileInfo[i].FullName; //记录图片源路径 双击显示图片时使用 imagePathList.Add(picDirPath); //图片载入到ImageList控件和imageList图片列表 this.imageList1.Images.Add(Image.FromFile(picDirPath)); } //显示文件列表 this.listView1.Items.Clear(); this.listView1.LargeImageList = this.imageList1; this.listView1.View = View.LargeIcon; //大图标显示 //imageList1.ImageSize = new Size(40, 40); //不能设置ImageList的图像大小 属性处更改 //開始绑定 this.listView1.BeginUpdate(); //添加图片至ListView控件中 for (int i = 0; i < imageList1.Images.Count; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; lvi.Text = "pic" + i; this.listView1.Items.Add(lvi); } this.listView1.EndUpdate(); //显示打开图片列表所需时间 sw.Stop(); long secords = sw.ElapsedMilliseconds; //毫秒单位 label1.Text += '\n' + (Convert.ToDouble(secords) / 1000).ToString(); //转换为秒 }

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67798.html