- •Введение
- •Часть I. Краткие основы Visual c# Глава 1. Основные определения книги
- •1.1. Требования для установки Visual Studio 2005
- •Глава 2. Методика разработки приложений для выполнения расчетов с эффектами анимации
- •Глава 3. Методика разработки приложений на нескольких формах
- •Часть II. Методология проектирования графики и печати на принтере Глава 4. Краткие сведения о графических возможностях Visual Studio
- •Глава 5. Рисование простых линий на форме или элементах управления и печать этих линий
- •Глава 6. Рисование сложных линий и печать всей формы как снимка экрана
- •Глава 8. Рисование текста и печать текстового файла
- •Глава 7. Рисование заполненных фигур и печать всей формы с предварительным просмотром
- •Часть III. Методология вычислений на основе Visual c# с использованием эффектов анимации Глава 9. Методика создания вычислительной системы
- •Глава 10. Арифметические вычисления
- •10.3. Анимация в виде циклического изменения непрозрачности панели
- •Глава 11. Разработка стандартного калькулятора
- •11.3. Анимация в виде циклического изменения цвета формы
- •11.4. Выполнение расчетов
- •Глава 12. Вычисление процентов
- •Глава 13. Степени, корни, логарифмы и факториалы
- •Часть IV. Методология вычислений на основе интеграции Visual c# с другими платформами Глава 14. Использование в Visual c# программ из Excel
- •Глава 15. Вычисление сложных математических выражений
- •Часть V. Интеграция Visual c# с Word Глава 16. Оглавление приложения по использованию методов Word
- •Глава 17. Запуск Word, добавление нового и открытие существующего документа
- •17.3. Выполнение программы
- •Часть VI. Получение расчетных параметров из баз данных Access Глава 18. Оглавление приложения по использованию Access
- •18.1. Алгоритм оглавления и проектирование формы
- •Глава 19. Открытие Access
- •Часть VII. Создание баз данных и интеграция с другими субд Глава 20. Создание баз и наборов данных
- •Глава 21. Архитектура доступа к данным ado.Net
- •Глава 22. Разработка баз данных при помощи шаблонов
- •22.1. Создание проекта sql Server Project
- •Часть VIII. Методология создания графической системы в двухмерном пространстве Глава 23. Алгоритмы и оглавление графической системы
- •Глава 24. График линейной функции
- •Глава 25. Графики типичных функций
- •Глава 26. Рисование при помощи перемещения мыши
- •Глава 27. Рисование линий при помощи нажатия кнопки мыши
- •Глава 28. Рисование прямоугольников и эллипсов при помощи нажатия кнопки мыши
- •Глава 29. Рисование заполненных прямоугольников и эллипсов при помощи нажатия кнопки мыши
- •Глава 30. Непрерывный график-осциллограмма и его проверка при помощи диспетчера задач и файла подкачки
- •Часть IX. Методология создания графической системы в трехмерном пространстве Глава 31. Теория и алгоритмы системы
- •32.1. Основные схемы интеграции
- •Глава 33. Изображение и управление трехмерными объектами в трехмерном пространстве
- •Глава 34. Изображение и управление трехмерными объектами в трехмерном пространстве на Visual Basic для интеграции с Visual c# и другими языками
- •Глава 35. Изображение объектов в трехмерном пространстве на Visual c# по данным из проекта на Visual Basic
- •35.1. Постановка задачи и проектирование формы
- •Глава 37. Изображение и управление поверхностями в трехмерном пространстве
- •Глава 40. Расчет и изображение линий уровня на поверхности
- •Часть X. Методология создания анимационной трехмерной графики на основе новых версий Visual c# и DirectX Глава 44. Методика проектирования неподвижных и подвижных плоских фигур
- •Глава 45. Методика проектирования неподвижных и подвижных пространственных фигур
- •Часть XI. Методология разработки мультимедиа и игр на основе Microsoft Agent Глава 46. Загрузка и установка компонентов Microsoft Agent
- •46.1. Краткие сведения о Microsoft Agent
- •Глава 47. Методика управления мультипликационными персонажами
- •Глава 48. Вывод на экран выступлений и анимаций всех персонажей
- •Глава 49. Методика создания компьютерных игр и мультфильмов
- •49.4. Выполнение программы
- •Глава 50. Пример Интернет-магазина на основе Microsoft Agent
- •Глава 51. Построение графика по точкам эксперимента и интеграция с мультипликационными персонажами ms Agent
- •Часть XII. Методология анимации объектов Глава 52. Оглавление системы программ для анимации объектов
- •52.1. Алгоритм и проект системы
- •Глава 53. Варианты часов с цифровой индикацией, индикаторами прогресса и датой
- •Глава 54. Вращение линии
- •Глава 55. Управляемое вращение линии
- •Глава 56. Управляемое вращение и перемещение фигуры
- •Глава 57. Управляемое заполнение фигур
- •Глава 58. Управляемый мигающий текст
- •Глава 59. Методика изображения летающих предметов
- •Глава 60. Методика анимации градиентного заполнения текста цветом
- •Глава 61. Вращающееся градиентное заполнение фигур цветом
- •Глава 62. Изображение кругов на воде с использованием двойной буферизации
- •Глава 63. Анимация текста в консольном приложении
- •Часть XIII. Методология создания, конвертирования и мультипликации изображений на форме Глава 64. Методика задания, конвертирования и поочередной замены изображений
- •Глава 65. Методика разработки мультипликации
- •Глава 66. Разработка мультипликации при помощи списка рисунков
- •Глава 67. Методика управления цветом изображения
- •Часть XIV. Воспроизведение аудио и видео Глава 68. Оглавление приложения по интеграции Visual c# с Windows Media Player
- •Глава 69. Воспроизведение аудио файлов из приложения Visual с#
- •Глава 70. Воспроизведение видео файлов из приложения Visual c#
- •70.3. Выполнение программы
- •Глава 72. Интеграция Visual c# с браузером Internet Explorer
- •Глава 73. Установка веб-компонентов Windows для веб-программирования на основе asp.Net
- •Часть XVI. Введение в программирование мобильных устройств Глава 74. Программирование портативных и карманных компьютеров
- •Часть XVII. Приложения Visual c# для использования на практике, например, в промышленности Глава 75. Алгоритмы для расчета площади, объема и массы изделий и заготовок
- •75.1. Объектно-ориентированный анализ геометрии изделий
- •Глава 76. Консольное приложение для расчета массы изделий
- •Глава 77. Вычисление массы изделий при помощи формы
- •Часть XVIII. Приложения Visual c# для использования в учебе и науке Глава 78. Ввод в систему свойств материалов для изготовления изделий
- •Глава 79. Математическое моделирование обработки заготовки при помощи аналитических решений
- •Глава 80. Математическое моделирование обработки заготовки при помощи метода конечных элементов
- •Глава 81. Математическое моделирование и графика для типичных техпроцессов
- •Глава 82. Методология учета анизотропии материала при проектировании техпроцесса изготовления изделия
- •Глава 83. Методология проектирования техпроцессов изготовления изделий коробчатой формы
- •Часть XIX. Методология создания и внедрения систем компьютерного проектирования Глава 84. Оптимизация раскроя материалов
- •Глава 85. Система компьютерного проектирования техпроцессов
- •Глава 86. Проектирование заготовительных операций подготовки материала
- •Глава 87. Проектирование операций изготовления заготовок
- •Глава 88. Проектирование операций обработки заготовок
- •Глава 89. Проектирование финишных операций изготовления изделий
- •Заключение
- •Часть XX. Передача приложения заказчику Глава 90. Методика передачи приложения пользователю
- •90.1. Этапы разработки программы для установки приложения
- •90.2. Создание проекта для установки приложения
- •Описание содержимого компакт-диска и схема использования
- •Список литературы
- •Предметный указатель
Глава 60. Методика анимации градиентного заполнения текста цветом
Листинг 60.1. Объявление и инициализация глобальных переменных.
//Задаем ширину и высоту прямоугольника,
//внутри которого будет размещаться текст:
int width_of_rectangle = 700;
int height_of_rectangle = 300;
//Верхняя горизонтальная линия прямоугольника отстоит
//от оси 'x' на расстоянии boundary_of_rectangle_у:
int boundary_of_rectangle_у = 15;
//Левая вертикальная линия прямоугольника отстоит
//от оси 'y' на расстоянии boundary_of_rectangle_x:
int boundary_of_rectangle_x = 15;
//Объявляем целочисленные переменные
//и задаем значения:
int Shift_of_Gradient = 10;
int Step_of_Gradient = 5;
Дважды щелкаем по диалоговой панели Form1 в режиме проектирования и в появившийся шаблон записываем наш код, после чего метод принимает такой вид.
Листинг 60.2. Метод Form1_Load.
private void Form1_Load(object sender, EventArgs e)
{
//Создаем объект myGraphics класса Graphics
//и стираем (Clear) другие изображения:
Graphics myGraphics = CreateGraphics();
myGraphics.Clear(BackColor);
}
Чтобы подключить к работе таймер, дважды щелкаем значок для компонента Timer (ниже формы в режиме проектирования). Появляется файл Form1.cs с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 60.3. Метод для компонента Timer.
private void timer1_Tick(object sender, EventArgs e)
{
//Создаем объект myGraphics класса Graphics:
Graphics myGraphics = CreateGraphics();
//Рисуем четыре граничные линии прямоугольника,
//внутри которого будет размещаться текст:
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, boundary_of_rectangle_у,
width_of_rectangle, boundary_of_rectangle_у);
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, boundary_of_rectangle_у,
boundary_of_rectangle_x, height_of_rectangle);
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, height_of_rectangle,
width_of_rectangle, height_of_rectangle);
myGraphics.DrawLine(new Pen(Color.Red, 3),
width_of_rectangle, boundary_of_rectangle_у,
width_of_rectangle, height_of_rectangle);
//Задаем тип шрифта, размер текста и стиль
//шрифта:
Font drawFont = new Font("Times New Roman", 100,
FontStyle.Bold, GraphicsUnit.Point);
//Записываем текст, цвет которого будет изменяться:
string drawText = "Visual";
//Задаем меру строки текста
//при помощи метода MeasureString:
SizeF SizeF_of_Text = new
SizeF(myGraphics.MeasureString(drawText, drawFont));
//Задаем точку, от которой
//будет рисоваться текст,
//сцентрированный внутри прямоугольника:
PointF Start_of_drawPointF =
new PointF(Convert.ToSingle((width_of_rectangle
- SizeF_of_Text.Width) / 2),
Convert.ToSingle((height_of_rectangle
- SizeF_of_Text.Height) / 2));
//Задаем координаты начальной и конечной точек
//градиентной заливки текста; изменяя эти координаты,
//мы изменяем и анимационный эффект:
PointF Start_of_Gradient_of_drawPointF =
new PointF(0, 0);
PointF End_of_Gradient_of_drawPointF =
new PointF(Shift_of_Gradient, 200);
//Создаем объект drawBrush класса LinearGradientBrush
//и задаем его параметры
//для градиентной заливки текста:
LinearGradientBrush drawBrush = new
LinearGradientBrush(Start_of_Gradient_of_drawPointF,
End_of_Gradient_of_drawPointF, Color.Red, BackColor);
//Рисуем текст в центре прямоугольника:
myGraphics.DrawString(drawText, drawFont,
drawBrush, Start_of_drawPointF);
//Высвобождаем ресурсы, выделенные объекту
//myGraphics:
myGraphics.Dispose();
//Сдвигаем градиент заливки текста
//на шаг Shift_of_Gradient;
//заново начинаем цикл градиентной заливки текста,
//когда величина Shift_of_Gradient
//достигнет заданного значения:
Shift_of_Gradient = Shift_of_Gradient +
Step_of_Gradient;
if (Shift_of_Gradient == 500)
{
Step_of_Gradient = -5;
}
else if (Shift_of_Gradient == -50)
{
Step_of_Gradient = 5;
}
}
В этом коде главным является вызов перегруженного метода DrawString (класса Graphics) вида: Overloads Public Sub DrawString(String, Font, Brush, PointF).
Чтобы установить значение свойства Interval компонента Timer в зависимости от свойства Value ползунка элемента управления TrackBar, дважды щелкаем элемент управления TrackBar в режиме проектирования. Появляется файл Form1.cs с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 60.4. Метод для элемента управления TrackBar.
private void trackBar1_Scroll(object sender,
EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = trackBar1.Value;
}
Согласно разработанной выше методике, чтобы иметь возможность приостановить (и запустить вновь) процесс анимации при помощи кнопки Stop Animation, дважды щелкаем эту кнопку в режиме проектирования (рис. 60.1). Появляется файл Form1.cs с шаблоном, выше которого объявляем переменную OffOn и присваиваем ей значение false:
//Объявляем булеву переменную OffOn
//и задаем ей значение, например, false:
bool OffOn = false;
После записи нашего кода шаблон принимает вид следующего метода.
Листинг 60.5. Метод для кнопки Stop Animation.
private void button1_Click(object sender, EventArgs e)
{
//Задаем чередование остановки и возобновления анимации
//после каждого щелчка кнопки button:
if (OffOn == false)
{
//Приостанавливаем анимацию:
timer1.Enabled = false;
//Изменяем значение OffOn на противоположное:
OffOn = true;
}
else
{
//Возобновляем анимацию:
timer1.Enabled = true;
//Изменяем значение OffOn на противоположное:
OffOn = false;
}
}
Листинг 60.6. Метод для компонента PrintDocument.
private void printDocument1_PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
//Создаем объект myGraphics класса Graphics:
Graphics myGraphics = CreateGraphics();
//Связываем объект myGraphics с текущим принтером:
myGraphics = e.Graphics;
//Рисуем четыре граничные линии прямоугольника,
//внутри которого будет размещаться текст:
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, boundary_of_rectangle_у,
width_of_rectangle, boundary_of_rectangle_у);
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, boundary_of_rectangle_у,
boundary_of_rectangle_x, height_of_rectangle);
myGraphics.DrawLine(new Pen(Color.Red, 3),
boundary_of_rectangle_x, height_of_rectangle,
width_of_rectangle, height_of_rectangle);
myGraphics.DrawLine(new Pen(Color.Red, 3),
width_of_rectangle, boundary_of_rectangle_у,
width_of_rectangle, height_of_rectangle);
//Задаем тип шрифта, размер текста и стиль
//шрифта:
Font drawFont = new Font("Times New Roman", 100,
FontStyle.Bold, GraphicsUnit.Point);
//Записываем текст, цвет которого будет изменяться:
string drawText = "Visual";
//Задаем меру строки текста
//при помощи метода MeasureString:
SizeF SizeF_of_Text = new
SizeF(myGraphics.MeasureString(drawText, drawFont));
//Задаем точку, от которой
//будет рисоваться текст,
//сцентрированный внутри прямоугольника:
PointF Start_of_drawPointF =
new PointF(Convert.ToSingle((width_of_rectangle
- SizeF_of_Text.Width) / 2),
Convert.ToSingle((height_of_rectangle
- SizeF_of_Text.Height) / 2));
//Задаем координаты начальной и конечной точек
//градиентной заливки текста; изменяя эти координаты,
//мы изменяем и анимационный эффект:
PointF Start_of_Gradient_of_drawPointF =
new PointF(0, 0);
PointF End_of_Gradient_of_drawPointF =
new PointF(Shift_of_Gradient, 200);
//Создаем объект drawBrush класса LinearGradientBrush
//и задаем его параметры
//для градиентной заливки текста:
LinearGradientBrush drawBrush = new
LinearGradientBrush(Start_of_Gradient_of_drawPointF,
End_of_Gradient_of_drawPointF, Color.Red, BackColor);
//Рисуем текст в центре прямоугольника:
myGraphics.DrawString(drawText, drawFont,
drawBrush, Start_of_drawPointF);
//Высвобождаем ресурсы, выделенные объекту
//myGraphics:
myGraphics.Dispose();
}
Теперь дважды щелкаем кнопку Print (рис. 60.1). Открывается файл Form1.cs с шаблоном, в который записываем код из предыдущей главы. В режиме выполнения (можно, но не обязательно это делать, остановить градиентную заливку текста в интересующий нас момент при помощи кнопки Stop Animation) после щелчка кнопки Print появляется стандартная панель Print, на которой мы оставляем по умолчанию принтер и параметры печати. После щелчка кнопки OK на панели Print принтер печатает прямоугольник и анимационный текст в том положении, который был на экране монитора в момент щелчка кнопки Print. Если печатается не весь прямоугольник с текстом, то в панели Print вместо включенного по умолчанию переключателя Портрет (Portrait) выбираем переключатель Ландшафт (Landscape), так как Form1 вытянута слева – направо, рис. 60.2.
Щелкая кнопку Print в различные моменты изменения (анимации) изображения, мы получим на принтере распечатки различных (во времени) положений анимационного текста внутри прямоугольника.
Таким образом, по разработанной в данной главе методике можно спроектировать анимацию на экране монитора и печать текущего положения анимации на принтере для любого текста внутри любого элемента управления для приложений различных типов.
