一、图片框PictureBox控件
用于在窗体的指定位置显示图片,其为不可编辑的控件,无法获得焦点。
图片框PictureBox的常用属性:
属性 | 说明 |
---|---|
Imgae | 用于设置显示在图片框控件上的图像 |
ImageLocation | 用于设置显示在图片框控件上的图像的路径 |
SizeMode | 用于设置图像位置和控件大小 |
其中SizeMode属性包含5个属性值:
属性值 | 说明 |
---|---|
Normal | 图像被置于PictureBox的左上角。如果图像比包含它的PictureBox大,则该图像将被裁剪掉。 |
StretchImage | PictureBox中的图像被拉伸或收缩,以适应PictureBox的大小。 |
AutoSize | 调整PictureBox的大小,使其等于所包含的图像大小。 |
CenterImage | 如果PictureBox比图像大,则图像将居中显示。如果PictureBox比图像小,则图像将居中显示并裁剪掉超出的部分。 |
Zoom | 图像大小按其原有的长宽比例被等比例放大或缩小。 |
使用PictureBox显示图片步骤:
(1)从工具箱拖拽PictureBox控件到窗体内
(2)点击PictureBox右上角小三角,弹出快捷菜单
(3)指定PictureBox需要显示的图像和大小模式
使用PictureBox显示图像需要注意的地方:
(1)定PictureBox控件的图像可以设置Image属性,也可以设置ImageLocation属性。
(2)区别在于Image属性是图像对象类型,而ImageLocation属性是图像路径,是文本类型。
(3)右上角小三角“选择图像”,指定的是Image属性。
二、图片集ImageList控件
思考:PictureBox控件中只能存储一张图片,如果需要对多张图片进行展示,如何存储多张图片?
我们可以使用图片集ImageList控件,用于存储多个图像资源,是一个图像集,通过索引访问图像集中的图片。
ImageList控件的常用属性:
属性 | 说明 |
---|---|
Images | 存储在控件中的图像集合 |
ImageSize | 图像集中图像的大小,最大值为256*256 |
ColorDepth | 图像集中图像的颜色深度 |
注意:
(1)图像资源存储于Images属性中,它是一个图片集合。
(2)图片集中的图像可通过其索引值或其键值进行访问。
(3)所有图像都将以相同大小显示,由ImageSize属性设置。
案例: 使用ImageList控件制作图片查看器
实现步骤:
(1)向ImageList控件中添加图像。
【1】向窗体中添加图像集ImageList控件。
【2】在设计器中, 点击其右上角的小三角,弹出快捷菜单。
【3】选择需要添加的图片,并设置图片的大小和颜色深度。
(2)展示ImageList控件中的图像。
【1】按照截图效果,拖动控件,对图片浏览窗体进行布局。
【2】窗体加载时,显示第一张图片,并将“上一张”按钮置为不可用。
//图片浏览窗体Load事件处理函数
private void ImageListForm_Load(object sender, EventArgs e)
{
//窗体加载后,默认显示第一张图片
this.pic_animation.Image = this.imageList1.Images[0];
//显示第一张图像,“上一张”按钮不可用
this.btn_pre.Enabled = false;
}
【3】点击“上一张”、“下一张”按钮,实现图片切换效果。
private int currentIndex = 0;
private void btnPrev_Click(object sender, EventArgs e)
{
currentIndex--; //当前图片索引减一
SetButtonEnable(); //设置按钮是否可用
//将当前图像显示到图片框中
this.pic_animation.Image = this.imageList1.Images[currentIndex];
}
private void btnNext_Click(object sender, EventArgs e)
{
currentIndex++; //当前图片索引加一
SetButtonEnable(); //设置按钮是否可用
//将当前图像显示到图片框中
this.pic_animation.Image = this.imageList1.Images[currentIndex];
}
【4】编写判断“上一张”、“下一张”按钮是否可用的方法,提供给上一张,下一张按钮调用。
private void SetButtonEnable()
{
this.btnPrev.Enabled = true;
this.btnNext.Enabled = true;
if(imgIndex == 0)
this.btnPrev.Enabled = false;
if (imgIndex == this.imageList1.Images.Count - 1)
this.btnNext.Enabled = false;
}
三、计时器Timer控件
按用户定义的时间间隔引发事件的控件,程序每隔一定时间重复执行一个操作。
Timer控件的常用属性、方法和事件:
属性 | 说明 |
---|---|
Interval | 事件发生的间隔(频率),以毫秒为单位 |
Enable | 设置计时器是否启用,布尔类型 |
方法 | 说明 |
---|---|
Start() | 启动计时器 |
Stop() | 停止计时器 |
事件 | 说明 |
---|---|
Tick | 定时间隔到,自动引发的事件 |
案例:使用Timer控件制作电子时钟
实现步骤:
(1)向窗体内添加标签Label控件,用于显示当前时间,并且设置Label控件的字体大小、颜色、字体等属性。
(2)向窗体内添加计时器Timer控件,用于定时引发事件,指定间隔事件1秒:Interval属性设置为1000(单位:毫秒),添加Tick事件,在事件处理函数中更新当前时间。
//窗体加载的时候显示时间
private void TimerForm_Load(object sender, EventArgs e)
{
this.lbl_clock.Text = DateTime.Now.ToString("yyyy年MM月dd日 hh:mm:ss");
}
//每隔一秒钟显示时间
private void timer1_Tick(object sender, EventArgs e)
{
//获取系统当前时间,格式化后,显示到Label中
this.lbl_clock.Text = DateTime.Now.ToString("yyyy年MM月dd日HH:mm:ss");
}
(3)窗体加载后启动定时器
方法1:设置Timer控件的Enable属性为true
方法2:在窗体Load事件中使用timer控件.Start()方法启动定时器
private void TimerForm_Load(object sender, EventArgs e)
{
this.timer1.Start();
}
四、系统托盘NotifyIcon控件
0013.PNG软件启动后会在系统右下角创建一个小图标,称为系统托盘,当软件在后台运行时,可以通过系统托盘对软件进行相关操作。
NotifyIcon控件的常用属性:
属性 | 说明 |
---|---|
Icon | 将在系统栏中显示的图标,必须为ico格式文件 |
Text | 当鼠标悬停在图标上时,显示的文本 |
ContentMenuScript | 与系统托盘图标相关联的右键快捷菜单 |
案例:为之前的程序添加系统托盘
需求:
(1)程序运行后,在系统任务栏右下角启动托盘图标 。
(2)鼠标悬停在图标上时,显示软件名称。
(3)在系统托盘上点击右键,弹出右键快捷菜单,右键菜单包括“关于”和“退出”两个菜单项 ,点击"关于"弹出一个软件介绍的新窗体,点击"退出"退出整个应用程序。
实现步骤:
(1)向窗体中添加NotifyIcon控件,设置系统托盘的图标和文本。
(2)向图片浏览窗体中加入右键快捷菜单ContextMenuScript,并且添加菜单项"关于"和"退出"。
(3)设置NotifyIcon控件的ConTextMenuStrip属性,将右键快捷菜单与系统托盘关联。
(4)编写菜单相应代码:
//“关于”菜单项单击事件处理函数
private void 关于ToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmAbout frm = new FrmAbout();
frm.show();
}
//“退出”菜单项单击事件处理函数
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
网友评论