参照Windows系统提供的图片浏览器功能,制作一个自己的图片浏览器,具有缩略图效果,幻灯片效果灯基本功能。
基本流程图:
树节点的添加:
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)
{
}
}
效果图:
双击图片进行浏览:
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();//开始
}
全屏模式幻灯片:
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (index != picList.Count - 1)
{
pictureBox1.Image = Image.FromFile(picList[++index]);
}
}