Методика задания, конвертирования и поочередной замены изображений

 

Листинг 64.1. Метод с нашим кодом для вывода фонового изображения.

private void Form1_Load(object sender, EventArgs e)

{

this.BackgroundImage =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig1.jpg");

}

Интересна другая запись нашей строки кода:

this.BackgroundImage =

Image.FromFile(@"D:\MyDocs\MyDocs F\Fig1.jpg");

После старта проекта (Build, Build Solution; Debug, Start Without Debugging) появляется форма с фоновым изображением в виде файла Fig1.jpg (рис. 64.6).

Листинг 64.2. Обработчик щелчка кнопки для вывода фонового изображения.

private void button1_Click(object sender, EventArgs e)

{

this.groupBox1.BackgroundImage =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig5.jpg");

}

Теперь после старта проекта и щелчка кнопки предыдущее фоновое изображение Fig1.jpg (листинг 64.1) заменится новым изображением Fig5.jpg (листинг 64.2), показанным на рис. 64.7.

Аналогично можно записать наш код в любой другой метод, например, в обработчик щелчка по форме или по любому другому элементу управления.

Листинг 64.3. Конвертирование, сохранение и вывод изображения.

private void Form1_Load(object sender, EventArgs e)

{

//Загружаем Fig2_1.jpg в объект myImage класса Image:

Image myImage =

Image.FromFile(@"D:\MyDocs\MyDocs F\Fig2_1.jpg");

//Конвертируем Fig2_1.jpg в (.gif) и сохраняем Save:

myImage.Save(@"D:\MyDocs\MyDocs F\Fig2_1.gif",

System.Drawing.Imaging.ImageFormat.Gif);

//Выводим изображение как фоновое для формы:

this.BackgroundImage =

Image.FromFile(@"D:\MyDocs\MyDocs F\Fig2_1.gif");

}

Аналогично для конвертирования изображения Fig2_1.gif из формата (.gif), например, в формат (.png) используется код:

Image myImage =

Image.FromFile(@"D:\MyDocs\MyDocs F\Fig2_1.gif");

myImage.Save(@"D:\MyDocs\MyDocs F\Fig2_1.png",

System.Drawing.Imaging.ImageFormat.Png);

Аналогично конвертируются изображения из одного формата в другой из перечня поддерживаемых форматов на рис. 64.8.

После старта проекта мы увидим форму с фоновым изображением в другом формате (рис. 64.9).

Теперь в файл Form1.cs необходимо написать нашу часть кода. Сначала в любом месте внутри класса Form1 (например, ниже свернутого блока кода) объявляем массив изображений класса Image и глобальные переменные:

//Массив из 8 изображений (индекс 0 не используем):

Image[] myArrayImages = new Image[9];

//Объявляем и инициализируем целочисленные переменные:

int j = 0;

int k = 1;

Дважды щелкаем по Form1 в режиме проектирования (или в панели Properties на вкладке Events дважды щелкаем по имени события Load) и в появившийся шаблон записываем наш код, после чего метод принимает такой вид.

Листинг 64.4. Метод Form1_Load для загрузки изображений.

private void Form1_Load(object sender, EventArgs e)

{

//Из графических файлов 8 рисунков формата (.jpg)

//заполняем массив myArrayImages[9]:

myArrayImages[1] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig1.jpg");

myArrayImages[2] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig2.jpg");

myArrayImages[3] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig3.jpg");

myArrayImages[4] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig4.jpg");

myArrayImages[5] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig5.jpg");

myArrayImages[6] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig6.jpg");

myArrayImages[7] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig7.jpg");

myArrayImages[8] =

Image.FromFile("D:\\MyDocs\\MyDocs F\\Fig8.jpg");

}

Аналогично в приложение загружаются другие массивы, если мы хотим использовать чередование серии одних изображений сериями других. Чтобы подключить к работе таймер, дважды щелкаем значок timer1 (ниже формы в режиме проектирования). Появляется файл Form1.cs с шаблоном, который после записи нашего кода принимает следующий вид.

Листинг 64.5. Метод для компонента Timer1.

private void timer1_Tick(object sender, EventArgs e)

{

//Выводим изображение в качестве фонового PictureBox:

pictureBox1.BackgroundImage = myArrayImages[j];

//Организовываем цикл для восьми рисунков:

j = j + k;

if (j == 8)

{

//От последнего рисунка переходим к первому:

k = -8;

}

else if (j == 0)

{

//Задаем первый рисунок для начала цикла:

k = 1;

}

}

Запускаем проект: Build, Build Solution; Debug, Start Without Debugging.

В ответ Visual C# выполняет программу и на рабочий стол выводит Form1 в режиме выполнения (рис. 64.9). Внутри элемента pictureBox осуществляется поочередная замена одного рисунка следующим за интервал времени в 1000 миллисекунд, который мы установили с помощью свойства Interval в панели Properties для компонента Timer (Таймер). Частота смены изображений регулируется за счет изменения значения свойства Interval. Вместо элемента pictureBox в качестве окна мы можем использовать другой элемент, например, Panel или GroupBox, или какой-либо еще.

Таким образом, по разработанной в данной главе методике можно спроектировать на экране циклическую замену любых изображений, заданных в виде графических файлов.

Предлагаю ознакомиться с аналогичными статьями: