2013-08-03 2 views
-1

Я хочу создать простое слайд-шоу изображений, когда таймер переключится, он переключится на следующий индекс изображения (и будет цикл), но с эффектом затухания. Как это можно сделать на C#?Изображение ползунка в C#?

Текущий код не переключает изображения? А также - как я могу создать fade ffect?

Я создал простой таймер с интервалом 5000 мс, включив его при запуске.

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; 

     } 
    } 
+0

чистый C# или с помощью WPF? – Sharath

+0

@Sharath Я никогда не использовал WPF, но все, что было легче понять. –

+0

Возможно, вам понадобится сделать недействительным изображение. Я бы переключился на другой вид сравнения. –

ответ

1

Вы не можете сравнить Bitmap, загруженные с ресурса таким образом. Каждый раз, когда вы получаете изображение с ресурса (в вашем случае с использованием свойства 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 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; 
    } 
} 

И после этого, переписать этот код с помощью массива :)

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