-1

我正在使用一个 imageList,它存储了 5 个图像,其中 3 个是 .jpg 和 2 个 .bmp。

我正在使用这些图像使用计时器更改图片框图像 -

private void timer1_Tick(object sender, EventArgs e)
    {
        pictureBox1.Image = imageList1.Images[imgIndex++];
    }

在哪里private int imgIndex = 0;设置Form类。

我有两个问题,首先,图片框中显示的图像分辨率非常像素化且质量很差,我试图通过更改属性来解决这个问题ColorDepthimageList我也尝试过使用不同的图像格式.gif,即.png等并更改图像大小,但这不起作用。如何获得更好的分辨率?

第二个问题是当计时器到达最后一个图像时,应用程序崩溃并出现错误 'InvalidArgument=Value of '5' is not valid for 'index. 参数名称:index' imageList中有5个图像,调试时出现错误,private int imgIndex = 0;我该如何解决?

4

3 回答 3

0

对于 5 个索引为 0 的图像,最大索引大小应该是 4 而不是 5。这就是它在 value = 5 时给出错误的原因。对于分辨率,您需要将 SizeMode 属性设置为 Normal

于 2011-09-01T11:47:35.393 回答
0

MSDN->“ImageList 通常由其他控件使用,例如 ListView、TreeView 或 ToolBar”。尽管您可能能够以自己的方式使用 ImageList,但您可能会看到以这种方式使用它的一些意想不到的副作用。尝试使用图像列表而不是 ImageList。

List<Image> images = new List<Image>();

// assign images.  images.Add(...

private void timer1_Tick(object sender, EventArgs e)
    {
        pictureBox1.Image = images[imgIndex++];
    }
于 2011-09-01T12:54:17.683 回答
0

我遇到同样的问题,每隔一段时间,表单资源文件决定为我的图像列表提供较低分辨率的图像格式。

我必须从图像列表中删除图像并重新添加它们以恢复完整分辨率。

于 2020-06-01T13:15:04.997 回答