0%

制作家庭影集

  • 来源:明日科技
  • 制作家庭影集


    实例说明

    许多家庭为了防止照片的损坏,便将图片存入电脑中,为了更方便的浏览图片,本实例制作了一个多图片的浏览程序,运行本实例,单击“上一张”、“下一张”按钮,可以对图片进行快速浏览。实例运行效果如图1所示。

    图1 制作家庭影集

    关键技术

    本实例在实现时,首先通过DirectoryInfo类的GetFileSystemInfos方法从指定的文件夹中获取图片信息;然后将所有的图片名称取出来放在一个字符串中,并通过Split方法分割字符串生成一个存储图片名称的数组,数组的大小就是图片的数量;最后通过一个变量进行增加或减少作为数组下标从而实现图片的显示。下面对本实例中用到的关键技术进行详细介绍。
    (1)DirectoryInfo类的GetFileSystemInfos方法 该方法用来返回表示某个目录中所有文件和子目录的强类型FileSystemInfo项的数组,其语法格式如下:
    public Rectangle WorkingArea { get; }
    参数说明
    返回值:强类型FileSystemInfo项的数组。
    (2)Split方法 该方法返回的字符串数组包含字符串中的子字符串(由指定Unicode字符数组的元素分隔),其语法格式如下:
    public string[] Split(char[] separator)
    参数说明 separator:分隔此实例中子字符串的Unicode字符数组、不包含分隔符的空数组或null。
    返回值:一个数组,其元素包含此实例中的子字符串,这些子字符串由separator参数中的一个或多个字符分隔。

    设计过程

    (1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,命名为TailorFamilyAlbum。
    (2)更改默认窗体Form1的Name属性为Frm_Main,在该窗体中添加两个Button控件和一个PictureBox控件,分别用来执行上一张、下一张导向操作以及显示图片信息。
    (3)程序主要代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public void GetAllFiles(DirectoryInfo dir)
    {
    FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //初始化一个FileSystemInfo类型的数组
    foreach (FileSystemInfo i in fileinfo) //循环遍历fileinfo中的每一个记录
    {
    if (i is DirectoryInfo) //当i在类DirectoryInfo中存在时
    {
    GetAllFiles((DirectoryInfo)i); //获取i下的所有文件
    }
    else //当不存在该i时
    {
    string str = i.FullName; //记录变量i的全名
    int b = str.LastIndexOf("\\\"); //在此示例中获取最后一个匹配项的索引
    string strType = str.Substring(b + 1); //保存文件的后缀
    //当文件格式为“jpg”或者“bmp”时
    if (strType.Substring(strType.Length - 3) == " jpg " || strType.Substring(strType.Length - 3) == " bmp ")
    {
    strInfo += strType + "#"; //为变量strInfo赋值
    }
    }
    }
    }

    Frm_Main窗体加载时,调用GetAllFiles方法,并将该方法的返回值转化为一个字符串数组,用于存放图片名。代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    private void Frm_Main_Load(object sender, EventArgs e)
    {
    DirectoryInfo dir = new DirectoryInfo(strPath); //创建一个DirectoryInfo对象
    GetAllFiles(dir); //获取dir下的所有文件
    if (strInfo != "") //当字符串不为空时
    {
    strName = strInfo.Split('#'); //获取文件名
    Num = 0; //初始化Num的值
    showPic(Num); //显示图片
    Count = strName.Length - 1; //记录Array中的元素数
    }
    else//当字符串为空时
    {
    MessageBox.Show("影集里没有照片");//弹出信息提示
    }
    }

    秘笈心法

    心法领悟006:妙用foreach语句!
    foreach循环专门用来遍历数组和集合的元素,foreach的工作原理是逐个枚举出数组或集合中的每一个元素,每当枚举一个元素就执行一次语句块中的内容,在使用foreach遍历的过程中要注意不可以更改遍历中的集合。

    觉得文章有用?请我喝杯咖啡~