Часть 1
118
Рис. 1.26. Окно программы Бегущая строка
в стиле "бегущей" строки. При наведении курсора мыши на бан-
нер процесс прокрутки приостанавливается.
Листинг 1.24. Модуль формы программы Бегущая строка
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// графическая поверхность
Graphics g;
Примеры и задачи
119
// баннер
Bitmap baner;
// область вывода баннера
Rectangle rct;
public Form1()
{
InitializeComponent();
try
{
// загружаем файл баннера
baner = new Bitmap("banner.png");
}
catch (Exception exception)
{
MessageBox.Show(
"Ошибка загрузки файла баннера\n" +
exception.ToString(), "Баннер");
this.Close();// закрываем форму
return;
}
// определяем графическую поверхность
g = this.CreateGraphics();
// определяем область отображения баннера
rct.X = 0;
rct.Y = 0;
rct.Width = baner.Width;
rct.Height = baner.Height;
// настройка таймера
timer1.Interval = 50;
Часть 1
120
timer1.Enabled = true;
}
// сигнал от таймера
private void timer1_Tick(object sender, EventArgs e)
{
// сместить область отображения
// баннера влево
rct.X -= 1;
// если область отображения целиком
// "уехала" за левую границу формы,
// вернем ее обратно
if (Math.Abs(rct.X) > rct.Width)
rct.X += rct.Width;
// т.к. область отображения "едет" влево, то после
// вывода в "съехавшую" область выведем баннер
// еще раз (как минимум один, если ширина формы
// равна ширине баннера)
for (int i = 0; i <= Convert.ToInt16(
this.ClientSize.Width / rct.Width) + 1; i++)
g.DrawImage(baner,
rct.X + i * rct.Width, rct.Y);
}
// перемещение указателя мыши
private void Form1_MouseMove(object sender,
MouseEventArgs e)
{
// при наведении курсора мыши на баннер
// движение останавливается
if ((e.Y < rct.Y + rct.Height) && (e.Y > rct.Y))
Примеры и задачи
121
{
if (timer1.Enabled != false)
timer1.Enabled = false;
}
else
{
if (timer1.Enabled != true)
timer1.Enabled = true;
}
}
}
}
Полет
Программа Полет (рис. 1.27, листинг 1.25) демонстрирует прин-
цип реализации анимации.
Кадры анимации формируются путем вывода в нужную область
окна изображения объекта. Фоновый рисунок и изображение
объекта (рис. 1.28) загружаются из ресурса.
Рис. 1.27. Окно программы Полет
Do'stlaringiz bilan baham: |