03-Windows基础控件二

2021-04-13  本文已影响0人  D丝学编程

一、图片框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控件制作图片查看器

0012.PNG
实现步骤:

(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控件制作电子时钟

0011.PNG
实现步骤:

(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();
 }
上一篇下一篇

猜你喜欢

热点阅读