天天看点

C#图片浏览器制作

         参照Windows系统提供的图片浏览器功能,制作一个自己的图片浏览器,具有缩略图效果,幻灯片效果灯基本功能。

基本流程图:

C#图片浏览器制作

树节点的添加:

private void treeExpand()
        {
            try
            {
                TreeNode desktop = new TreeNode(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
                desktop.Name="desktop";
                desktop.Text = "桌面";
                desktop.Tag = "desktop";
                desktop.ImageIndex = 0;
                treeView1.Nodes.Add(desktop);

                TreeNode cpt = new TreeNode();
                cpt.Name = "computer";
                cpt.Text = "计算机";
                cpt.Tag = "computer";
                cpt.ImageIndex = 1;
                cpt.SelectedImageIndex = 1;
                desktop.Nodes.Add(cpt);
                //系统盘
                string[] drives = Environment.GetLogicalDrives();
                foreach (string drive in drives)
                {
                    TreeNode node = new TreeNode(drive);
                    node.Name = drive;
                    node.Text = "("+drive.Split('\\')[0]+")";
                    node.Tag = "system";
                    node.ImageIndex = 2;
                    node.SelectedImageIndex = 2;
                    cpt.Nodes.Add(node);
                    node.Nodes.Add("");
                }
                //Administration
                TreeNode anode = new TreeNode(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));
                anode.Name = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
                anode.Text = "Administration";
                anode.Tag = "administrator";
                anode.ImageIndex = 4;
                anode.SelectedImageIndex = 4;
                desktop.Nodes.Add(anode);
                anode.Nodes.Add("");
                //桌面文件
                string[] directories = Directory.GetDirectories(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
                foreach (string dir in directories)
                {
                    TreeNode dnode = new TreeNode(dir);
                    dnode.Name = dir;
                    dnode.Text = Path.GetFileNameWithoutExtension(dir);
                    dnode.Tag = "directory";
                    dnode.ImageIndex = 3;
                    dnode.SelectedImageIndex = 3;
                    desktop.Nodes.Add(dnode);
                    dnode.Nodes.Add("");
                }
                
                desktop.Expand();
                cpt.Expand();
            }
            catch (System.Exception ex)
            {

            }
        }
           

子节点的添加:

private void subTreeNodeLoad(TreeNode e)
        {
            try
            {
                if (e.Name != "desktop"&&e.Name!="computer")
                {
                    e.Nodes.Clear();
                }
                string path = e.Name;
                //ShowImg(path);
                //ShowImages(path);
                string[] dics = Directory.GetDirectories(path);
                foreach (string dic in dics)
                {
                    TreeNode subNode = new TreeNode(dic);
                    subNode.Name = dic;
                    subNode.Text = dic.Split('\\')[dic.Split('\\').Length - 1];
                    subNode.Tag = "directory";
                    subNode.ImageIndex = 3;
                    subNode.ImageIndex = 3;
                    subNode.Nodes.Add("");
                    e.Nodes.Add(subNode);
                }
            }
            catch (System.Exception ex)
            {
            	
            }
        }
           

显示图片:

/// <summary>
        /// C# imagelist listview显示图片
        /// </summary>
        private void ShowImages(string filePath)
        {
            listView1.View = View.LargeIcon;
            listView1.LargeImageList = imageList2;
            DirectoryInfo di = new DirectoryInfo(filePath);
            FileInfo[] afi = di.GetFiles("*.*");
            
            string temp;
            int j = 0;
            pathList.Clear();
            for (int i = 0; i < afi.Length; i++)
            {
                pathList.Add(afi[i].FullName);
                temp = afi[i].Name.ToLower();
                if (temp.EndsWith(".jpg"))
                {
                    AddImg(ref afi[i], ref j, ".jpg");
                }
                else if (temp.EndsWith(".jpeg"))
                {
                    AddImg(ref afi[i], ref j, ".jpeg");
                }
                else if (temp.EndsWith(".gif"))
                {
                    AddImg(ref afi[i], ref j, ".gif");
                }
                else if (temp.EndsWith(".png"))
                {
                    AddImg(ref afi[i], ref j, ".png");
                }
                else if (temp.EndsWith(".bmp"))
                {
                    AddImg(ref afi[i], ref j, ".bmp");
                }
                else if (temp.EndsWith(".ico"))
                {
                    AddImg(ref afi[i], ref j, ".ico");
                }
            }
        }

        private void AddImg(ref FileInfo fi, ref int j, string ex)
        {
            imageList2.Images.Add(Image.FromFile(fi.FullName));
            listView1.Items.Add(fi.Name.Replace(ex, ""), j);
            j++;
        }
           
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            try
            {
                if ((string)e.Node.Tag == "desktop")
                {
                    e.Node.SelectedImageIndex = 0;
                }
                else if ((string)e.Node.Tag == "computer")
                {
                    e.Node.SelectedImageIndex = 1;
                }
                else if ((string)e.Node.Tag == "system")
                {
                    e.Node.SelectedImageIndex = 2;
                }
                else if ((string)e.Node.Tag == "administrator")
                {
                    e.Node.SelectedImageIndex = 4;
                }
                else
                {
                    e.Node.SelectedImageIndex = 3;
                }
                string path = e.Node.Name;
                imageList2.Images.Clear();
                listView1.Clear();
                ShowImages(path);
            }
            catch (System.Exception ex)
            {

            }
        }
           

效果图:

C#图片浏览器制作

双击图片进行浏览:

private void listView1_DoubleClick(object sender, EventArgs e)
        {
            int index = listView1.SelectedItems[0].Index;
            picWindow win = new picWindow(ref pathList,index);
            win.ShowDialog();
        }
           

图片浏览器各种必备功能:

private void button1_Click(object sender, EventArgs e)
        {//上一张
            if (index != 0)
            {
                pictureBox1.Image = Image.FromFile(picList[--index]);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {//下一张
            if (index != picList.Count - 1)
            {
                pictureBox1.Image = Image.FromFile(picList[++index]);
            }
        }

        private void button5_Click(object sender, EventArgs e)//逆时针
        {
            Image myImage = pictureBox1.Image;
            myImage.RotateFlip(RotateFlipType.Rotate90FlipXY); //调用RotateFlip方法将JPG格式图像进行旋转
            pictureBox1.Image = myImage;

        }

        private void button6_Click(object sender, EventArgs e)//顺时针
        {
            Image myImage = pictureBox1.Image;
            myImage.RotateFlip(RotateFlipType.Rotate270FlipXY); //调用RotateFlip方法将JPG格式图像进行旋转
            pictureBox1.Image = myImage;

        }

        private void button3_Click(object sender, EventArgs e)
        {//放大
            Image myImage = pictureBox1.Image;
            myBitmap = new Bitmap(myImage, myImage.Width * 2, myImage.Height * 2);
            pictureBox1.Image = myBitmap;
        }

        private void button4_Click(object sender, EventArgs e)
        {//缩小
            Image myImage = pictureBox1.Image;
            myBitmap = new Bitmap(myImage, myImage.Width/2, myImage.Height/2);
            pictureBox1.Image = myBitmap;
        }

        private void button7_Click(object sender, EventArgs e) //幻灯片
        {
            timer1.Interval = 3000;//设置timer1控件时间间隔为1000ms即3秒
            timer1.Tick += new System.EventHandler(timer1_Tick);
            timer1.Start();//开始

        }
           
C#图片浏览器制作

全屏模式幻灯片:

   private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
           {
               if (index != picList.Count - 1)
               {
                   pictureBox1.Image = Image.FromFile(picList[++index]);
               }
           }
           
C#图片浏览器制作