在C#中使用imageList时图像分辨率不佳

时间:2011-09-01 11:36:55

标签: c# winforms resolution picturebox imagelist

我使用的是一个存储了5张图像的imageList,其中3张是.jpg,2张是.bmp。

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

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

private int imgIndex = 0;类中设置了Form

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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++];
    }

答案 2 :(得分:0)

我遇到同样的问题,即表单资源文件偶尔决定为我的图像列表提供较低分辨率的图像格式。

我必须从图像列表中删除图像,然后重新添加,以恢复全部分辨率。