首页 > 编程笔记 > C#笔记 阅读:25

C# ImageList控件的用法(附带实例)

Imagelist 可以翻译为图像列表,图标如下:


这个工具是在“工具箱”|“组件”选项内,可以参考下图左侧:


这个不是应用在窗体 (Form) 的工具,而是供控件使用的幕后工具,如图片框、功能按钮、标签等。创建 ImageList 对象成功后,此对象也不在窗体内显示,而在窗体的下方显示,可以参考上图右侧。

程序设计时可以将多张图像同时加载到 ImageList 内,然后将控件与 ImageList 做关联,假设控件是 PictureBox 工具,可以用下列方式做关联:
pictureBox1.ImageIndex = imageList1.Images[index]
上述方式相当于让 pictureBox1 显示图像列表索引 index 的图像。未来程序设计时,可以用 pictureBox1 切换显示不同索引的图像,这可以简化设计,同时达到设计动画的目的。

C#创建图像列表内容

默认图像列表的图像大小 ImageSize 是 16×16 像素,建议改为 255×255 像素,当我们要创建图像列表时,可以依照图像大小重新设定图像。

下面是笔者绘制的,130×210 的火柴人系列图像。


未来可以使用图像集合编辑器,将上述图像文件加载到图像列表 ImageList 中。

【实例】创建动态火柴人,请先创建窗体 ch,在此窗体内创建 pictureBox1 和 button1,然后创建 imageList1,请单击 imageList1,然后将 ImageSize 改为 140, 230。程序设计的目标是单击 button1 后可以让头像往左移动 10 次,每次可以回到右边。


接下来单击“Images”|“(Collection)”右边的 ... 图标,可以打开图像集合编辑器:


单击“添加”按钮新增 man0.gif 到 man4.gif 这些文件。创建完成后请单击“确定”按钮,接着设计下列程序就可以有动画的火柴人。
using System;
using System.Drawing;
using System.Windows.Forms;

namespace ch
{
    public partial class Form1 : Form
    {
        // 静态变量,用于记录当前图像索引
        static int index = 0;

        public Form1()
        {
            InitializeComponent();
        }

        // 窗体加载事件
        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
            pictureBox1.Image = imageList1.Images[index]; // 显示索引为0的图像
        }

        // 按钮点击事件,用于循环显示图像
        private void button1_Click(object sender, EventArgs e)
        {
            for (int loop = 0; loop < 10; loop++)
            {
                index = 0;
                while (index <= 4)
                {
                    pictureBox1.Image = imageList1.Images[index++];
                    DateTime now = DateTime.Now;
                    do
                    {
                        // 等待约200毫秒
                    } while ((DateTime.Now - now).TotalMilliseconds < 200);

                    Application.DoEvents(); // 将系统控制权交给操作系统,刷新界面
                }
            }
        }
    }
}
执行结果为:

相关文章