Windows图片浏览器课程设计
(含代码)
一、 设计要求
基本要求:
利用visual C#开发工具实现一图片浏览器。要求完成以下功能:
1、打开多张图片,可以控制前后图片的浏览
2、可以设置图片的显示方式:全屏或置顶等
3、在运行状态中隐藏界面,显示在托盘程序中
二、 功能介绍
2.1 打开图片
能打同时选中多张图片打开,如图2.1所示:
图2.1 打开图片
2.2 显示图片
显示用户打开的图片,同时通过statusstrip控件的text属性将图片的路径,
图片的数量、大小显示在窗体上,如图2.2所示:
图2.2 显示图片
2.3图片的旋转及缩放
图片可实现旋转和放大功能,如图2.3所示:
图2.3 旋转和缩放
2.4 图片浏览器隐藏
当用户暂时不使用Wingdows图片浏览器时,可使用隐藏按钮将图片浏览器隐藏在托盘中,该功能是通过notifyIcon控件实现的,在该空间的Icon属性上面加载*.Icon
的图标,即在托盘中显示的图标,如图2.4所示:
图2.4 隐藏图片浏览器
2.5 图片全屏
图片的全屏功能是将图片铺满整个桌面,点击全屏按钮桌面将打开的图片全屏,如图2.5所示:
图2.5 图片全屏效果
2.6幻灯片
幻灯片效果即,在设定的时间间隔内图片浏览器自动放映下一张图片,通过Time控件中的Interval属性设置幻灯片放映的频率,图略。
三、 需求
随着生活的多样性发展,越来越多的人们喜欢收集各种各样的图片,照片,带来各样的乐趣和赏心悦目的心境,科技的发展,电子图片也非常普遍,随之图片浏览器也在日益改进以满足人们的需要。
本次图片浏览器的设计就是按照指定的要求通过C#软件设计出特定功能的图片浏览器,能实现打开各种格式的图片,比如*.bmp、*.jpg、*.gif、*.gif等,打开多张图片之后可以浏览下一张或者上一张图片,也可一通过幻灯片自行播放图片,放大或者缩小图片等基本功能,当暂时不需要使用图片浏览器时可以将图片浏览器最小化通过小图标显示在托盘程序中,当需要时只需单击即可恢复图片浏览器界面,简洁方便。
四、 概要设计
该程序主要由一个图片框来显示电脑中以存储的图片,图片浏览器的基本功能是打开图片,查看图片等,图片浏览器的基本功能流程图如图4.1所示:
开始
查找图片
打开目录 放大
显示图片 缩小 打开文件
旋转
隐藏 退出
图4.1 功能流程图
其基本功能都是通过button控件触发实现的,图片浏览器界面如图4.2所示:
图4.2 图片浏览器界面
五、 详细设计
5.1 窗体设计
打开C# 软件,在窗体设计界面设计所需要功能对应的控件,此软件中各个功能按钮都是用button控件实现,显示图片的空间为picturebox 和panle控件共同实现,picturebox是为了显示图片,panle控件是为了在放大图片时自动出现滚动条以至于能通过移动滚动条看到放大部分看不到的地方,各个控件如图5.1所示:
图5.1 控件显示
加载显示控件后继续加载一些在运行隐藏的控件,openFileDialog控件、statusStrip控件、notifyIcon控件、timer控件、folderBrowserDialog控件。查看是否已经加载此控件在设计窗口下方显示,如图5.2所示:
图5.2 隐藏控件
5.2 属性修改
加载好各种需要的控件后,修改控件必要的属性,比如name、text、anchor、autosize、backcolor、image等等,以至于实现自己控件的想要功能,且使得界面更加整洁美观。选中要修该属性的控件,在属性窗口中修改必要的属性,如图5.3所示:
图5.3 属性窗口
修改各控件属性的name,可以在代码修改及编写是中更方便的运用,比如(退出)按钮的name属性改为exit,(放大)按钮name属性修改为:enlargment等等,
写代码时方便理解,通俗易懂。
在button控件的image属性中加载合适的图片(同时将text属性改为空白),使得button按钮上显示一张小图片,让界面更加美观,不需要图片的按钮可修改自己喜欢的背景色,如图5.4所示:
图5.4 button属性
5.2 代码设计
为实现各个控件的功能,必须在控件相应的地方书写各功能对应的代码,在窗口设计中双击相应按钮进入对应代码,例如(退出)按钮,代码如下: private void exit_Click(object sender, EventArgs e)
{
Quit();
} //退出
private void Quit() //退出函数
{
DialogResult result = MessageBox.Show("你确定要退出,", "退出提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (result == DialogResult.Cancel)
{
return;
}
else
{
this.Close();
}
}
其中“Quit()”为编写的调用函数,类似的现象经常运用。 某些事件的功能,须在属性框中找到相应事件双击进入相应的代码界面: 例如time控件中的Tick事件,如图5.5所示:
图5.5 事件属性
全部程序见(附录一)
六、 调试结果与分析
调试是作为软件设计必不可少的,在调试过程中也必然会遇到各式各样的问题,必须找出原因并加以解决,在这个Windows图片浏览器软件设计中,设计过程中就一直在调试,没往下一个功能进行一步,就会调试一次,每编写一段程序和代码也都会调试一次,这样做虽然感觉有点麻烦,但是在下次调试出错时就很容易早出是哪一块地方出现了问题,这样就很容易解决。
在最后一步的调试中,不小心误删了一行简短的代码,又无法恢复,以至于在调试中幻灯片不会自动放映图片,下一张的按钮也不能实现其功能,经过针对性排查,发现是在NextPic()函数中调用的ShowPics()被误删,以至于在picturebox中不能正常显示图片,在加回显示图片的函数ShowPics()后,程序可正常运行,类似调试出错的现象时有发生,在能查找错误的情况下我们应该避免出错,以至于节省不必要的时间,在不知多少次的设计、调试和修改,通过查阅资料,最终顺利完成了设计内容,并能达到期望的结果。
七、 结论
也许根据要求制作一个Windows图片浏览器也许也许不是重点,而能够灵活的应用C#开发软件才是我们需要需要关注的,通过使用C#开发软件使得我们提高能快速适应各种开发软件的能力也是可取的。
开发软件只是一个工具,能灵活的应用开发软件,通过不同角度的设计,实现种种不同的功能,以满足人们的需要,才是我们作为设计者设计的动机,C#开发软件是一个功能强大的应用设计软件,如果作为广大的兴趣爱好者,应该认真的学习掌握应用它。
参考文献
[1] 郑阿奇. C#程序设计
.北京:机械工业出版社,2007. [2] 汪维华,汪维清,胡章平 等. C#.NET程序设计实用教程. 北京:清华大学出版社,2011.1
[3] 张立. C#程序设计编程宝典[M].北京:清华大学出版社,2009. [4] 罗兵,刘艺,孟武生. C#程序设计大学教程.北京:机械工业出版社,2007.
目录
一、 设计要求 ..................................................................................................... 1 二、 功能介绍 ..................................................................................................... 1
2.1 打开图片 .................................................................................................... 1
2.2 显示图片 .................................................................................................... 2
2.3图片的旋转及缩放 ..................................................................................... 2
2.4 图片浏览器隐藏 ......................................................................................... 3
2.5 图片全屏 ..................................................................................................... 3
2.6幻灯片.......................................................................................................... 3 三、 需求分析 ..................................................................................................... 4 四、 概要设计 ..................................................................................................... 5 五、 详细设计 ..................................................................................................... 6
5.1 窗体设计 ..................................................................................................... 6
5.2 属性修改 ..................................................................................................... 7 六、 调试结果与分析 ......................................................................................... 9 七、 结论........................................................................................................... 10
参考文献.......................................................................................................... 11
附录一 ............................................................................................................. 13
附录一
using System;
using System.Collections.Generic; using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D; using System.IO;
namespace Windows图片浏览器
{
public partial class Formmain : Form
{
string[] fileNames;
int num;
int curPicture = 1;
public Formmain()
{
InitializeComponent();
}
private void OpenImage() //打开一张图片函数
{
OpenFileDialog OpenFileDialog = new OpenFileDialog();
OpenFileDialog.Filter = "Bitmap 文件(*.bmp)|*.bmp|Jpeg文件(*.jpg)|*.jpg|所有合适文件(*bmp/*.jpg)|*.bmp/*jpg";
OpenFileDialog.FilterIndex = 2;
OpenFileDialog.RestoreDirectory = true;
OpenFileDialog.Multiselect = true; //可选中多张图片
if (DialogResult.OK == OpenFileDialog.ShowDialog())
{
pbmain.Image = (Bitmap)Bitmap.FromFile(OpenFileDialog.FileName,false);
this.AutoScroll = true;
this.AutoScrollMinSize = new Size((int)(pbmain.Width),
(int)pbmain.Height);
this.Invalidate();
}
toolStripStatusLabelpath.Text = "图片路径:" + OpenFileDialog.FileName.ToString() + "||";
toolStripStatusLabelamount.Visible = true;
toolStripStatusLabelamount.Text = "当前第" + 1 + "/" + (num
+ 1) + "张图片";
toolStripStatusdaxiao.Text = "图片大小:
"+pbmain.Image.Size.Width.ToString(); //显示图片大小
toolStripStatusdaxiao.Text += "*" +
pbmain.Image.Size.Height.ToString();
}
private void ShowPics() //显示图片
{
try
{
this.pbmain.Image =
Image.FromFile(fileNames[curPicture - 1]);
}
catch
{
}
}
private void openone_Click(object sender, EventArgs e)
{
OpenImage();
}
private void PreviousPic() //上一张图片函数
{
// timer1.Enabled = false;
if (curPicture == 1)
{
curPicture = num + 1;
toolStripStatusLabelamount.Text = "当前第" + curPicture
+ "/" + (num + 1) + "张图片";
}
else
{
toolStripStatusLabelamount.Text = "当前第" + (curPicture -= 1) + "/" + (num + 1) + "张图片";
}
left.Enabled = true;
ShowPics();
}
private void NextPic() //下一张图片函数
{
if (curPicture > num)
{
curPicture = 0;
toolStripStatusLabelamount.Text = "当前第" + (curPicture += 1) + "/" + (num + 1) + "张图片";
}
else
{
toolStripStatusLabelamount.Text = "当前第" + (curPicture += 1) + "/" + (num + 1) + "张图片";
}
right.Enabled = true;
ShowPics();
}
private void exit_Click(object sender, EventArgs e)
{
Quit();
} //退出
private void Quit() //退出函数
{
DialogResult result = MessageBox.Show("你确定要退出,", "退出提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (result == DialogResult.Cancel)
{
return;
}
else
{
this.Close();
}
}
private void enlargment_Click(object sender, EventArgs e)//放大
{
if (pbmain.Image != null)
{
pbmain.Width = pbmain.Width * 120 / 100;
pbmain.Height = pbmain.Height * 120 / 100;
}
}
private void nszxuanzhuan_Click(object sender, EventArgs e)//逆转
{
pbmain.Image.RotateFlip(RotateFlipType.Rotate90FlipXY);
pbmain.Refresh();
}
private void sszxuanzhuan_Click(object sender, EventArgs e) //顺转
{
pbmain.Image.RotateFlip(RotateFlipType.Rotate270FlipXY);
pbmain.Refresh();
}
private void left_Click(object sender, EventArgs e)
{
PreviousPic();
toolStripStatusdaxiao.Text = "图片大小:" + pbmain.Image.Size.Width.ToString();
toolStripStatusdaxiao.Text += "*" +
pbmain.Image.Size.Height.ToString();
} //上一张
private void right_Click(object sender, EventArgs e)
{
NextPic();
toolStripStatusdaxiao.Text = "图片大小:" + pbmain.Image.Size.Width.ToString();
toolStripStatusdaxiao.Text += "*" +
pbmain.Image.Size.Height.ToString();
} //下一张
private void openfile_Click(object sender, EventArgs e) //
{
SearchFiles();
}
private void SearchFiles() //目录查找函数
{
toolStripStatusLabelamount.Visible = true;
pbmain.Visible = true;
if (this.folderBrowserDialog1.ShowDialog() ==
DialogResult.OK)
{
this.fileNames =
System.IO.Directory.GetFiles(this.folderBrowserDialog1.SelectedPath,
"*.jpg");
if (this.fileNames == null || this.fileNames.Length == 0)//没有图片
{
MessageBox.Show("该文件夹中没有图片~");
}
else
{
num = (int)fileNames.Length - 1;
this.curPicture = 1;
this.ShowPics();
left.Enabled = true;
right.Enabled = true;
enlargment.Enabled = true;
reduce.Enabled = true;
" + 1 + "/" toolStripStatusLabelamount.Text = "当前第+ (num + 1) + "张图片";
toolStripStatusLabelpath.Text = "图片路径:" +
; folderBrowserDialog1.SelectedPath.ToString() + "||"
}
}
}
private void yincang_Click(object sender, EventArgs e)//单击隐藏按钮时
{
this.Hide();//隐藏主窗体
this.WindowState = FormWindowState.Normal;//主窗体为默认
this.notifyIcon1.Visible = true;//显示托盘图标
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)//单击托盘图标时
{
this.Visible = true ;//显示主窗体
this.WindowState = FormWindowState.Normal;//窗体设置为默认大小
// this.notifyIcon1.Visible = false;//隐藏托盘图标
private void reduce_Click(object sender, EventArgs e)//缩小
{
if (pbmain.Image != null)
{
pbmain.Width = pbmain.Width * 80 / 100;
pbmain.Height = pbmain.Height * 80 / 100;
}
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void Formmain_KeyPress(object sender, KeyPressEventArgs e)
{
this.FormBorderStyle = FormBorderStyle.Fixed3D;
.WindowState = FormWindowState.Normal; this
}
private void quanping_Click(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
private void huandp_Click(object sender, EventArgs e)
{
huandp.Enabled = true;
timer1.Enabled = true;
}
private void stop_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
NextPic();
}
}
}
摘要
本程序界面是借鉴Windows7操作系统自带的Windows照片查看器的某些布局,如上一张、下一张、放大、旋转(左、右)等按钮,本程序具有系统图片浏览器的部分功能,按课程设计要求再添加某些特定的功能,因为和系统图片浏览器的部分功能相似,使用起来也灵活方便,从而实现的一个新的图片浏览器。
本程序是应用C#(C Sharp)开发软件制作而成,能查看各种格式的图片。
关键词:图片浏览器、C#、