天天看點

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#圖檔浏覽器制作