Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Жарков В.А. - Visual C++ 2005, DirectX 9.0c и Microsoft Agent в компьютерной графике, мультимедиа и играх (Листинги книги) - 2005

.pdf
Скачиваний:
307
Добавлен:
13.08.2013
Размер:
1.14 Mб
Скачать

280 Жарков В.А. Компьютерная графика, мультимедиа и игры на 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");

}

Соседние файлы в предмете Программирование на C++