Жарков В.А. - Visual C++ 2005, DirectX 9.0c и Microsoft Agent в компьютерной графике, мультимедиа и играх (Листинги книги) - 2005
.pdf280 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005
myArray[4,4] = 1; myArray[3,3] = Alpha;
//Передаем начальные значения //диагональных элементов матрицы myArray //элементам матрицы цвета myColorMatrix: myColorMatrix->Matrix00 = myArray[0,0]; myColorMatrix->Matrix11 = myArray[1,1]; myColorMatrix->Matrix22 = myArray[2,2]; myColorMatrix->Matrix33 = myArray[3,3]; myColorMatrix->Matrix44 = myArray[4,4];
}
Чтобы мультипликационное изображение появилось внутри элемента управле-
ния PictureBox, в панели Properties (для этого элемента PictureBox) на вкладке Events
дважды щелкаем по имени события Paint и в появившийся шаблон записываем наш код, после чего метод принимает такой вид.
Листинг 59.4. Код для элемента управления PictureBox.
private: System::Void pictureBox1_Paint( System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
//Вводим прямоугольник myRectangle с размерами, //равными размерам элемента pictureBox1: Rectangle myRectangle(pictureBox1->Location.X,
pictureBox1->Location.Y, this->pictureBox1->Width, this->pictureBox1->Height);
//Рисуем на экране первое изображение myImage1 //внутри прямоугольника myRectangle: e->Graphics->DrawImage(myImage1, myRectangle);
//Устанавливаем матрицу цвета myColorMatrix //в качестве текущей цветовой модели:
myImageAttributes->SetColorMatrix(myColorMatrix);
//Рисуем на экране второе изображение myImage2: e->Graphics->DrawImage(myImage2, myRectangle, pictureBox1->Location.X, pictureBox1->Location.Y, myImage2->Width, myImage2->Height,
GraphicsUnit::Pixel, myImageAttributes);
}
Чтобы подключить к работе таймер, дважды щелкаем значок для компонента Timer (ниже формы в режиме проектирования). Появляется файл Form1.h с шаблоном, который после записи нашего кода принимает следующий вид.
Глава 59. Методика управления цветом изображения |
281 |
Листинг 59.5. Метод для компонента Timer.
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
//Задаем значения элементов матрицы цвета
//myColorMatrix класса ColorMatrix при помощи
//объекта myRandom генератора случайных чисел //и метод NextDouble, который возвращает //случайное число между 0,0 и 1,0:
if (Alpha < 0 ) if (Alpha > 1)
{
Step_of_Color = Step_of_Color * (-1); myColorMatrix->Matrix01 =
Convert::ToSingle(myRandom->NextDouble()); myColorMatrix->Matrix12 =
Convert::ToSingle(myRandom->NextDouble()); myColorMatrix->Matrix23 =
Convert::ToSingle(myRandom->NextDouble());
}
//Увеличиваем элемент матрицы цвета на один шаг: Alpha = Alpha + Step_of_Color; myColorMatrix->Matrix33 = Alpha; //Перерисовываем экран:
this->Refresh();
}
Листинг 59.6. Метод для компонента PrintDocument.
private: System::Void printDocument1_PrintPage( System::Object^ sender, System::Drawing::Printing::PrintPageEventArgs^ e)
{
//Печатаем первое изображение myImage1 //внутри прямоугольника myRectangle:
e->Graphics->DrawImage(myImage1, myRectangle);
}
Часть X. Воспроизведение аудио и видео при помощи VC++ 2005 и WMP 10
Глава 60. Оглавление приложения по ин-
теграции Visual C++ с Windows Media Player
Продолжаем разрабатывать методологию интеграции Visual C++ с другими платформами на примере интеграции с очень популярным и широко применяемым универсальным проигрывателем звуковых, видео и мультимедийных файлов Microsoft Windows Media Player. Мы разработаем схему применения методов VC++ для воспроизведения основных файлов, чтобы в дальнейшем по этой схеме мы могли постепенно дополнять нашу систему другими возможностями этой интеграции.
Чтобы воспроизводить указанные файлы, на компьютере должны быть установлены соответствующие техническое (“железо”) и программное обеспечения. Под техническим обеспечением понимается звуковая плата, кабели и колонки (и/или наушники). В качестве программного обеспечения известно много проигрывателей, но в данной книге мы рассмотрим наиболее известный из них, а именно, Microsoft Windows Media Player следующих версий:
Windows Media Player 6.4 for Win95 and Win NT4 Windows Media 7.1 for Win98, Win2000 and Win Me Windows Media 8 Series for Win98 SE, ME and 2000 Windows Media 8 Series for Windows XP
Windows Media Player 9 Series for Win98 SE, ME and 2000 Windows Media Player 9 Series for Windows XP
Все эти версии, а также последнюю английскую или русифицированную версию Windows Media Player 10 можно бесплатно загрузить с английского или русского сайта microsoft.com. Напомним, что проигрыватель Windows Media используется, чтобы слушать или просматривать оперативные новости, спортивные передачи, делать обзор аудио и видео файлов на Web-сайте, “посещать” концерт или семинар, воспроизводить клипы из кинофильма. К слову, в Windows Media Player понятие “клип” означает индивидуальный звуковой, видео или мультимедийный файл. Такие особенности делают Windows Media Player наиболее всесторонним, простым и эффективным проигрывателем мультимедиа: высококачественное воспроизведение широкого диапазона типов файлов; легкая адаптация (приспособление), чтобы выполнить наши пожелания (предпочтения); широкие и разнообразные возможности для работы с мультимедийными файлами; быстрый доступ к содержанию файлов. На указанном выше сайте корпорации Microsoft можно узнать, что последняя версия Windows Media Player 10 – это первый универсальный проигрыватель с функцией музыкального и видео автомата, а также можно узнать многое другое.
Глава 61. Воспроизведение аудио файлов из приложения Visual C++
Листинг 61.1. Метод для открытия Windows Media.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
//Start Windows Media Player: Process::Start("wmplayer.exe");
}
Теперь в файл Form3.h необходимо написать нашу часть кода для открытия проигрывателя Windows Media с последующим воспроизведением конкретного аудио файла при помощи второй основной кнопки “Start the audio file” на данной Form3 (рис. 61.1). Дважды щелкаем эту кнопку в режиме редактирования. Появляется файл Form3.h с шаблоном, который после записи нашего кода принимает такой вид.
Листинг 61.2. Метод для воспроизведения аудио файла.
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
//Запускаем Windows Media Player:
//и воспроизводим конкретный аудио файл: Process::Start("wmplayer.exe",
"C:\\WINDOWS\\Media\\tada.wav");
}
Видно, что при помощи этого метода мы хотим воспроизвести библиотечный музыкальный файл tada.wav с жесткого диска компьютера из папки Media:
C:\\WINDOWS\\Media\\tada.wav
Если же мы хотим воспроизвести музыкальный файл, например, Track03.cda с компакт-диска, установленного в дисковод F, то в шаблон метода на листинге 61.2 мы должны записать:
Process::Start("wmplayer.exe", "F:\\Track03.cda");
Глава 62. Воспроизведение видео файлов из приложения Visual C++
Листинг 62.1. Метод для воспроизведения видео файла.
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
//Запускаем Windows Media Player
//и воспроизводим конкретный видео файл: Process::Start("wmplayer.exe",
"C:\\WINDOWS\\clock.avi");
}
Напомним, что для версии проигрывателя 6 в коде на листинге 62.1 вместо фай-
ла "wmplayer.exe" следует записать "mplayer2.exe".
Часть XI. Интеграция Visual C++ с Microsoft Windows Explorer, NotePad, WordPad, Calculator, PowerPoint, FrontPage, Internet Explorer, веб-компонента-
ми и веб-службами
Глава 63. Открытие Windows Explorer, NotePad, WordPad, Calculator, PowerPoint и FrontPage
Листинг 63.1. Метод для открытия проводника Windows Explorer.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Process::Start("Explorer.exe");//Открываем WE.
}
В режиме выполнения (Build, Build Solution; Debug, Start Without Debugging) по-
сле щелчка кнопки на экране монитора появляется Windows Explorer (рис. 63.4). Аналогично, как в предыдущем параграфе, разработаем методику применения
класса Process и метода Start для открытия известного блокнота NotePad, редактора WordPad и калькулятора Microsoft Calculator, которые поставляются вместе с операционной системой Windows 98/2000/XP/Server 2003. Следовательно, для открытия блокнота NotePad из приложения VC++ в качестве параметра метода Start мы должны записать исполняемый файл этого блокнота в виде Notepad.exe, например, так:
Process::Start("Notepad.exe"); или Process::Start("Notepad");
Аналогично для открытия редактора WordPad записываем код:
Process::Start("WordPad.exe"); или Process::Start("WordPad");
Аналогично для открытия калькулятора Microsoft Calculator записываем код:
Process::Start("Calc.exe"); или Process::Start("Calc");
Для создания проекта, из которого будем вызывать внешние программы, в VS
щелкаем кнопку New Project (или File, New, Project). В панели New Project в окне Project Types выбираем тип проекта Visual C++, (.NET), в окне Templates выделяем шаблон Windows Forms Application (.NET), в окне Name записываем имя проекта,
например, Visual + NotePad и щелкаем OK. В ответ Visual С++ создает проект приложения и выводит форму Form1, которая после проектирования принимает обычный вид (рис. 63.5).
286 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005
Напомним, что перед написанием любой программы в начале файла Form1.h сначала подключаем пространство имен Diagnostics при помощи кода:
using namespace System::Diagnostics;
Теперь в файл Form1.h необходимо написать нашу часть кода для открытия блокнота Notepad при помощи кнопки (рис. 63.5). Дважды щелкаем эту кнопку в режиме редактирования. Появляется файл Form1.h с шаблоном (метода button1_Click), который после записи нашего кода принимает следующий вид.
Листинг 63.2. Метод для открытия блокнота Notepad.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Process::Start("Notepad.exe"); //Можно ("NotePad").
}
В режиме выполнения (Build, Build Solution; Debug, Start Without Debugging) по-
сле щелчка кнопки на экране монитора появляется блокнот NotePad.
Аналогично для открытия редактора WordPad в данный проект вводим новую кнопку (или создаем новый проект с кнопкой) и в шаблон метода для обработки щелчка этой кнопки записываем код:
Process::Start("WordPad.exe"); или Process::Start("WordPad");
Аналогично для открытия калькулятора Microsoft Calculator в данный проект вводим новую кнопку (или создаем новый проект с кнопкой) и в шаблон метода для обработки щелчка этой кнопки записываем код:
Process::Start("Calc.exe"); или Process::Start("Calc");
Аналогично для открытия программы презентаций PowerPoint (из системы Microsoft Office System) в данный проект вводим новую кнопку (или создаем новый проект с кнопкой) и в шаблон метода для обработки щелчка этой кнопки записываем:
Process::Start("PowerPnt.exe"); или Process::Start("PowerPnt");
Аналогично для открытия широко применяемой программы (платформы) для разработки сайтов FrontPage (из системы Microsoft Office System) в данный проект вводим новую кнопку (или создаем новый проект с кнопкой) и в шаблон метода для обработки щелчка этой кнопки записываем:
Process::Start("FrontPg.exe");или Process::Start("FrontPg");
При помощи FrontPage мы можем проектировать новый сайт или открыть существующий наш сайт, внести в него изменения (например, из приложения Visual C++) и при помощи команды File, Publish Web отправить на сервер провайдера (предоставляющего нам услуги хостинга), чтобы наш новый вариант сайта заменил предыдущий и был виден в Интернете.
Мы можем одновременно открыть все эти платформы при помощи одной кнопки, если в шаблон метода для обработки щелчка этой кнопки запишем:
Process::Start("Notepad");
Глава 63. Запуск WE, NotePad, WordPad, Calculator, PowerPoint и FrontPage 287
Process::Start("WordPad");
Process::Start("Calc");
Process::Start("PowerPnt");
Process::Start("FrontPg");
Напомним, что везде в скобках имя и расширение исполняемого файла мы можем записать как строчными, так и прописными буквами.
Далее по этой методике (при помощи класса Process и метода Start) мы можем открывать другие программы и постепенно дополнять нашу систему другими возможностями такой интеграции.
Глава 64. Интеграция Visual C++ с браузе-
ром Internet Explorer
Листинг 64.1. Метод для открытия Internet Explorer.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
//Открываем Internet Explorer на домашней странице: Process::Start("IExplore.exe");
}
Теперь в файл Form3.h необходимо написать нашу часть кода для открытия в браузере папки Favorites (Избранное) при помощи второй основной кнопки “Показать в браузере содержание папки Favorites – Избранное (Display the contents of the favorites folder in the browser)” на данной Form3 (рис. 64.2). Дважды щелкаем эту кнопку в режиме редактирования. Появляется файл Form3.h с шаблоном, который после записи нашего кода принимает следующий вид.
Листинг 64.2. Метод для открытия папки Favorites (Избранное).
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
//Объявляем переменную пути к папке Favorites (Избранное) //и записываем путь к этой папке:
String^ myFavoritesPath = Environment::GetFolderPath( Environment::SpecialFolder::Favorites);
//Показываем в браузере содержание папки Favorites: Process::Start(myFavoritesPath);
}
Перед написанием любой программы в Form5.h выше пространства имен с именем нашего проекта подключаем новое пространство имен:
using namespace System::Diagnostics;
Главное, в файл Form5.h необходимо написать нашу часть кода для открытия Internet Explorer и вывода сайта, адрес которого мы записали на первой основной кнопке (Start “www.company1.ru”) на Form5 (рис. 64.5). Дважды щелкаем эту кнопку в режиме редактирования. Появляется файл Form5.h с шаблоном, который после записи нашего кода принимает следующий вид.
Глава 64. Интеграция Visual C++ с браузером Internet Explorer |
289 |
Листинг 64.3. Метод для открытия Internet Explorer и вывода первого сайта.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
//Открываем Internet Explorer на заданном сайте: Process::Start("IExplore.exe", "www.company1.ru");
}
Теперь в файл Form5.h необходимо написать нашу часть кода для открытия Internet Explorer и вывода сайта, адрес которого мы записали на второй основной кнопке (Start “www.company2.ru”) на Form5 (рис. 64.5). Дважды щелкаем эту кнопку в режиме редактирования. Появляется файл Form5.h с шаблоном, который после записи нашего кода принимает такой вид.
Листинг 64.4. Метод для открытия Internet Explorer и вывода второго сайта.
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
//Открываем Internet Explorer на заданном сайте: Process::Start("IExplore.exe", "www.company2.ru");
}
Листинг 64.5. Метод для открытия Internet Explorer и вывода первого файла.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Process::Start("IExplore.exe",
"D:\\myPath\\myFile.html");
}
Теперь в файл Form7.h необходимо написать нашу часть кода для открытия Internet Explorer и вывода файла, путь к которому (на нашем компьютере) мы записа-
ли на второй основной кнопке (Start the file "myFile.asp") на данной Form7 (рис. 64.7).
Дважды щелкаем эту кнопку в режиме редактирования. Появляется файл Form7.h с шаблоном, который после записи нашего кода принимает такой вид.
Листинг 64.6. Метод для открытия Internet Explorer и вывода второго файла.
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
Process::Start("IExplore.exe",
"D:\\myPath\\myFile.asp");
}