C#中的图像滑块?

时间:2013-08-03 06:42:03

标签: c# image slider

我想创建一个简单的图像幻灯片,当定时器切换时,它将切换到图片框的下一个索引(并将循环)但具有淡入淡出效果。如何在C#中完成?

当前代码无法切换图像?而且 - 我怎样才能创建淡入淡出效果?

我创建了一个间隔为5,000毫秒的简单计时器,在启动时启用它。

 private void timerImage_Tick(object sender, EventArgs e)
    {
        if (pictureBox1.Image.Equals(InnovationX.Properties.Resources._1))
        {
            pictureBox1.Image = InnovationX.Properties.Resources._2;
        }
        else if (pictureBox1.Image.Equals(InnovationX.Properties.Resources._2))
        {
            pictureBox1.Image = InnovationX.Properties.Resources._3;
        }
        else
        {
            pictureBox1.Image = InnovationX.Properties.Resources._1;

        }
    }

1 个答案:

答案 0 :(得分:1)

您无法以这种方式比较从资源加载的位图。每次从资源获取图像时(在您的情况下使用属性InnovationX.Properties.Resources._1),您将获得Bitmap类的新实例。比较Bitmap类的两个不同实例将始终导致错误,即使它们包含相同的图像。

Bitmap a = InnovationX.Properties.Resources._1; // create new bitmap with image 1
Bitmap b = InnovationX.Properties.Resources._1; // create another new bitmap with image 1
bool areSameInstance = a == b; // will be false

如果将图像从资源加载到成员变量(例如在Load事件中)。

// load images when you create a form
private Bitmap image1 = InnovationX.Properties.Resources._1;
private Bitmap image2 = InnovationX.Properties.Resources._2;
private Bitmap image3 = InnovationX.Properties.Resources._3;

// assing and compare loaded images
private void timerImage_Tick(object sender, EventArgs e)
{
    if (pictureBox1.Image == image1)
    {
        pictureBox1.Image = image2;
    }
    else if (pictureBox1.Image == image2)
    {
        pictureBox1.Image = image3;
    }
    else
    {
        pictureBox1.Image = image1;
    }
}

然后,使用array重写该代码:)

Image[] images = new { 
    InnovationX.Properties.Resources._1, 
    InnovationX.Properties.Resources._2, 
    InnovationX.Properties.Resources._3 
};