- •Введение
- •Часть 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. Создание проекта для установки приложения
- •Описание содержимого компакт-диска и схема использования
- •Список литературы
- •Предметный указатель
Глава 65. Методика разработки мультипликации
Теперь в файл Form1.cs необходимо написать нашу часть кода для выполнения мультипликации. Сначала в любом месте внутри класса Form1 (например, ниже свернутого блока кода) объявляем массив и глобальные переменные:
//Объявляем массив из 6 изображений:
Image[] myArrayImages = new Image[6];
//Объявляем и инициализируем целочисленные переменные:
int j = 0; int k = 1;
Дважды щелкаем по Form1 в режиме проектирования (или Properties, Events, Load) и в шаблон записываем такой наш код.
Листинг 65.1. Метод Form1_Load для загрузки рисунков.
private void Form1_Load(object sender, EventArgs e)
{
//Из графических файлов 6 рисунков формата (.bmp)
//заполняем массив myArrayImages[6]:
myArrayImages[0] = Image.FromFile("E:/MyDocs/" +
"Анимация/Рисунки анимации/DeepDrawing_step0.bmp");
myArrayImages[1] = Image.FromFile("E:/MyDocs//" +
"Анимация/Рисунки анимации/DeepDrawing_step1.bmp");
myArrayImages[2] = Image.FromFile("E:/MyDocs/" +
"Анимация/Рисунки анимации/DeepDrawing_step2.bmp");
myArrayImages[3] = Image.FromFile("E:/MyDocs/" +
"Анимация/Рисунки анимации/DeepDrawing_step3.bmp");
myArrayImages[4] = Image.FromFile("E:/MyDocs/" +
"Анимация/Рисунки анимации/DeepDrawing_step4.bmp");
myArrayImages[5] = Image.FromFile("E:/MyDocs/" +
"Анимация/Рисунки анимации/DeepDrawing_step5.bmp");
}
Напомним, что метод Form1_Load выполняется одновременно с появлением (загрузкой – Load) Form1 на экране монитора. При этом рисунки мультипликации из любой папки загружаются в массив рисунков myArrayImages[N] с любым (заданным нами) количеством элементов N. Отметим, что в этом листинге полный путь расположения файла каждого рисунка формата (.bmp), начиная от диска E, записан на двух строках по правилу переноса на C#.
Аналогично в приложение загружаются другие рисунки в другие массивы рисунков, если мы хотим чередовать мультипликацию из серии одних рисунков сериями других рисунков.
Чтобы подключить к работе таймер, дважды щелкаем значок timer1 (ниже формы в режиме проектирования). Появляется файл Form1.cs с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 65.2. Метод для мультипликации изображений.
private void timer1_Tick(object sender, EventArgs e)
{
//Создаем объект myGraphics класса Graphics:
Graphics myGraphics = CreateGraphics();
//Вызываем метод DrawImage, используя перегрузку №8:
myGraphics.DrawImage(myArrayImages[j], -10, -10,
myArrayImages[j].Width, myArrayImages[j].Height);
//Высвобождаем ресурсы, выделенные объекту myGraphics:
myGraphics.Dispose();
//Организовываем цикл для шести рисунков:
j = j + k;
if (j == 5)
{
//От последнего рисунка переходим к первому:
k = -5;
}
else if (j == 0)
{
//Задаем первый рисунок для начала цикла:
k = 1;
}
}
В этом коде главным является вызов перегруженного метода DrawImage, который в VC# имеет много видов перегрузки. Здесь использована перегрузка с сигнатурой Graphics.DrawImage Method(Image, Int32, Int32, Int32, Int32).
Напомним, что система координат связана с Form1, а начало координат (0, 0) расположено в верхнем левом углу этой Form1. Координаты (-10, -10) в коде являются координатами верхнего левого угла j – го рисунка (j = 0, 1, 2, 3, 4, 5). Изменяя эти координаты, мы можем удобнее расположить рисунок на Form1. Последние два параметра в методе DrawImage определяют ширину и высоту рисунка на форме Form1.
Учитывая важность данного кода для использования на практике, приведем его второй вариант. А именно, вместо вывода рисунков при помощи метода DrawImage (точнее, вместо приведенной на листинге строки кода с этим методом), мультипликацию можно выводить в рамку рисунка pictureBox1 (предварительно расположив этот элемент PictureBox на форме) при помощи кода:
//Центрируем каждый рисунок внутри рамки pictureBox1:
pictureBox1.SizeMode =
PictureBoxSizeMode.CenterImage;
//Выводим j-е рисунки с интервалом Interval:
pictureBox1.Image = myArrayImages[j];
Чтобы установить значение свойства Interval компонента Timer в зависимости от свойства Value ползунка элемента управления TrackBar, дважды щелкаем элемент управления TrackBar в режиме проектирования. Появляется файл Form1.cs с шаблоном, который после записи нашего кода принимает вид следующей процедуры:
Листинг 65.3. Метод для элемента управления TrackBar.
private void trackBar1_Scroll(object sender,
EventArgs e)
{
//Устанавливаем свойство Enabled таймера, равным True:
timer1.Enabled = true;
//Устанавливаем значение свойства Interval таймера
//в зависимости от перемещения ползунка Value:
timer1.Interval = trackBar1.Value;
}
Согласно разработанной выше методике, чтобы иметь возможность приостановить (и запустить вновь) процесс анимации на любом рисунке при помощи кнопки Stop Animation, дважды щелкаем эту кнопку в режиме проектирования (рис. 65.8). Появляется файл Form1.cs с шаблоном, который после записи нашего кода имеет такой вид.
Листинг 65.4. Обработчик щелчка кнопки Stop Animation.
//Объявляем булеву переменную OffOn
//и задаем ей значение, например, false:
bool OffOn = false;
private void button6_Click(object sender, EventArgs e)
{
//Задаем чередование остановки и возобновления анимации
//после каждого щелчка кнопки button:
if (OffOn == false)
{
//Приостанавливаем анимацию:
timer1.Enabled = false;
//Изменяем значение OffOn на противоположное:
OffOn = true;
}
else
{
//Возобновляем анимацию:
timer1.Enabled = true;
//Изменяем значение OffOn на противоположное:
OffOn = false;
}
}
Листинг 65.5. Метод для компонента PrintDocument.
private void printDocument1_PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
//Чтобы печатать тот j-й рисунок, который видим:
j = j - 1;
//Выводим j-й рисунок, который видим на экране,
//при помощи метода DrawImage, используя перегрузку 8:
e.Graphics.DrawImage(myArrayImages[j], -10, -10,
myArrayImages[j].Width,
myArrayImages[j].Height);
}
Теперь дважды щелкаем кнопку Print (рис. 65.8). Открывается файл Form1.cs с шаблоном, который после записи нашего кода принимает такой вид.
Листинг 65.6. Обработчик щелчка кнопки Print.
private void button3_Click(object sender, EventArgs e)
{
//Передаем объекту PrintDialog1 информацию об объекте
//PrintDocument1 при помощи свойства Document:
printDialog1.Document = printDocument1;
//Выводим стандартную панель Print при помощи метода
//ShowDialog для задания параметров печати:
if (printDialog1.ShowDialog() == DialogResult.OK)
printDocument1.Print();
}
Проверяем в действии созданную нами программу для печати на принтере любого рисунка мультипликации (на примере изготовления стакана). Для этого получаем на экране монитора (по описанной выше методике) разработанную мультипликацию, останавливаем мультипликацию на интересующем нас рисунке (при помощи кнопки Stop Animation) и щелкаем кнопку Print.
Щелкая кнопки Stop Animation и Print в различные моменты изменения (мультипликации) рисунка, мы получим на принтере распечатки различных (во времени) положений рисунка.
Таким образом, по разработанной в данной главе методике можно спроектировать мультипликацию на экране монитора и печать текущего положения мультипликации на принтере для любого технологического процесса изготовления детали (изделия, вещи), любого рисунка, чертежа или схемы.
