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

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

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

20 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005

myPoint3,

myPoint4

};

e->Graphics->DrawCurve(myPen, apt, 0, 3, 0.9f); //Высвобождаем память, выделенную объекту myPen: myPen->Dispose();

}

Листинг 5.3. Код на новом Visual C++ 2005 для печати изображения.

private:

System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document: printDialog1->Document = printDocument1;

//Выводим стандартную панель Print при помощи метода //ShowDialog() для задания параметров печати

//и печатаем документ при помощи метода Print(): printDialog1->ShowDialog(); printDocument1->Print();

}

Листинг 5.4. Код на прежнем Visual C++ (2002-2004 годов) для печати.

private:

System::Void button1_Click(System::Object * sender, System::EventArgs * e)

{

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document: printDialog1->Document = printDocument1;

//Выводим стандартную панель Print при помощи метода //ShowDialog() для задания параметров печати

//и печатаем документ после щелчка OK на панели Print //при помощи метода Print():

if (printDialog1->ShowDialog() == DialogResult::OK) printDocument1->Print();

}

Глава 5. Рисование простых линий на форме или элементах и печать линий 21

Листинг 5.5. Код на Visual C# для печати изображения на принтере.

private void button1_Click(object sender, EventArgs e)

{

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document: printDialog1.Document = printDocument1;

//Выводим стандартную панель Print при помощи метода //ShowDialog() для задания параметров печати

//и после щелчка OK на панели Print печатаем документ //при помощи метода Print():

if (printDialog1.ShowDialog() == DialogResult.OK) printDocument1.Print();

}

Листинг 5.6. Код на Visual Basic для печати изображения на принтере.

Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As EventArgs) Handles Button3.Click

'Передаем объекту PrintDialog1 информацию об объекте

'PrintDocument1 при помощи свойства Document: PrintDialog1.Document = PrintDocument1

'Выводим панель Print при помощи метода ShowDialog 'для задания параметров и вызываем процедуру Print(): If PrintDialog1.ShowDialog() = DialogResult.OK Then

PrintDocument1.Print() End If

End Sub

Листинг 5.7. Код на Visual C++ 2005 для печати изображения.

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{

//Передаем объекту printPreviewDialog1 информацию о

//printDocument1 при помощи свойства Document: printPreviewDialog1->Document = printDocument1;

//Выводим панель Print preview при помощи метода //Show() для задания параметров печати

//и печатаем документ при помощи метода Print(): printPreviewDialog1->Show();

if (printPreviewDialog1->DialogResult == ::System::Windows::Forms::DialogResult::OK) printDocument1->Print();

}

Глава 6. Рисование сложных линий на форме и элементах управления

Листинг 6.1. Код для рисования прямоугольника.

private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)

{

//Задаем цвет и толщину пера:

Pen^ myPen1 = gcnew Pen(Color::Black, 3);

//Объявляем объект myRectangle и создаем его экземпляр: Rectangle myRectangle = Rectangle(10, 15, 150, 200); //Рисуем фигуру:

e->Graphics->DrawRectangle(myPen1, myRectangle); //Высвобождаем память, выделенную объекту myPen1: myPen1->Dispose();

}

Листинг 6.2. Код для рисования кривых линий.

private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)

{

//Задаем цвет и толщину перьев:

Pen^ myPen1 = gcnew Pen(Color::Black, 3); Pen^ myPen2 = gcnew Pen(Color::Black, 1);

//Объявляем объекты и создаем экземпляры этих объектов: Point myPoint1 = Point(50, 50);

Point myPoint2 = Point(100, 25); Point myPoint3 = Point(200, 5); Point myPoint4 = Point(275, 50); Point myPoint5 = Point(300, 150); Point myPoint6 = Point(350, 200); Point myPoint7 = Point(250, 250); array<Point>^ myCurvePoints =

{

myPoint1,

myPoint2,

myPoint3,

myPoint4,

myPoint5,

myPoint6,

myPoint7

};

Глава 6. Рисование сложных линий и печать всей формы

23

//Рисуем линии: e->Graphics->DrawLines(myPen1, myCurvePoints);

e->Graphics->DrawClosedCurve(myPen2, myCurvePoints); //Высвобождаем память от перьев myPen1, myPen2: myPen1->Dispose();

myPen2->Dispose();

}

Глава 7. Рисование заполненных фигур на форме и элементах управления

Листинг 7.1. Код для рисования заполненного прямоугольника.

private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)

{

//Задаем тип и цвет кисти: SolidBrush^ myBrush =

gcnew SolidBrush(Color::Black);

//Объявляем объект myRectangle и создаем его экземпляр: Rectangle myRectangle = Rectangle(10, 15, 150, 200); //Рисуем и заполняем фигуру: e->Graphics->FillRectangle(myBrush, myRectangle); //Высвобождаем память, выделенную объекту myBrush: myBrush->Dispose();

}

Листинг 7.2. Строка для рисования заполненного эллипса.

e->Graphics->FillEllipse(myBrush, myRectangle);

Глава 8. Рисование текста

Листинг 8.1. Код для рисования горизонтального текста.

private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)

{

//Объявляем переменную myString и присваиваем значение: String^ myString = "Visual Studio";

//Объявляем объект myFont и создаем экземпляр объекта: System::Drawing::Font^ myFont =

gcnew System::Drawing::Font("Arial", 30);

//Объявляем объект myBrush и создаем экземпляр объекта: SolidBrush^ myBrush = gcnew SolidBrush(Color::Black);

//Задаем координаты начала текста: float x = 5.0f;

float y = 50.0f;

//Рисуем горизонтальный текст кистью myBrush: e->Graphics->DrawString(myString, myFont, myBrush, x, y);

//Высвобождаем память, выделенную объектам: myFont->Dispose();

myBrush->Dispose();

}

Листинг 8.2. Строки для рисования вертикального текста.

//Объявляем объект myFormat и создаем экземпляр объекта: System::Drawing::StringFormat^ myFormat =

gcnew StringFormat(StringFormatFlags::DirectionVertical);

//Рисуем вертикальный текст кистью myBrush: e->Graphics->DrawString(myString, myFont, myBrush,

x, y, myFormat);

Часть III. Методология вычислений на основе Visual C++ с использованием эффектов анимации

Глава 9. Методика создания вычислительной системы

Листинг 9.1. Код для мигания названия переключателя.

//Объявляем булеву переменную myText со значением false: bool static myText = false;

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)

{

//Вводим анимацию: if (myText == false)

{

//Выводим название переключателя: radioButton3->Text = "&2. Calculator"; //Изменяем значение myText на противоположное: myText = true;

}

else

{

//Удаляем название переключателя: radioButton3->Text = "";

//Изменяем значение myText на противоположное: myText = false;

}

}

Глава 10. Арифметические вычисления

Теперь в файл Form3.h необходимо написать нашу часть кода для выполнения первой арифметической операции (сложения) после щелчка первой кнопки со знаком равенства “=” на Form3; дважды щелкаем эту кнопку. Появляется файл Form3.h с шаблоном, в который записываем:

double a, b;

a = Convert::ToDouble(textBox1->Text);

b = Convert::ToDouble(textBox2->Text); textBox3->Text = Convert::ToString(a + b);

Аналогично дважды щелкаем вторую кнопку. Появляется файл Form3.h с шаблоном, в который записываем такой же код, только вместо сложения записываем вычитание двух чисел и следующие номера окон TextBox:

double a, b;

a = Convert::ToDouble(textBox4->Text);

b = Convert::ToDouble(textBox5->Text); textBox6->Text = Convert::ToString(a - b);

Аналогично дважды щелкаем третью кнопку. Появляется файл Form3.h с шаблоном, в который записываем такой же код, только вместо вычитания записываем умножение двух чисел и следующие номера окон TextBox:

double a, b;

a = Convert::ToDouble(textBox7->Text);

b = Convert::ToDouble(textBox8->Text); textBox9->Text = Convert::ToString(a * b);

Аналогично дважды щелкаем последнюю четвертую кнопку. Появляется файл Form3.h с шаблоном, в который записываем такой же код, только вместо умножения записываем деление двух чисел и следующие номера окон TextBox:

double a, b;

a = Convert::ToDouble(textBox10->Text);

b = Convert::ToDouble(textBox11->Text); textBox12->Text = Convert::ToString(a / b);

Листинг 10.1. Код для выполнения анимации.

//Уменьшаем прозрачность на шаг 0.1: Opacity = Opacity + 0.1;

//При достижении или превышении //полной непрозрачности панели, равной 1,

//возвращаемся к исходной прозрачности 0.3: if (Opacity >= 1) Opacity = 0.3;

//Выводим значение прозрачности //в заголовок формы:

28 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005

this->Text = String::Concat("Opacity: ", Opacity.ToString());

Глава 11. Разработка стандартного калькулятора

Теперь в файл Form5.h необходимо написать нашу часть кода для выполнения расчетов на калькуляторе. Сначала в любом месте, например, после последнего метода, объявляем глобальные переменные:

int i; double Number, Memory;

Чтобы запрограммировать выполнение на калькуляторе первой операции сложения при помощи щелчков двух кнопок “+” и “=” (рис. 11.1), сначала дважды щелкаем кнопку “+” и в появившийся шаблон метода записываем код:

i=1;

Number = Convert::ToDouble(textBox1->Text); textBox1->Text = "";

textBox1->Focus();

Кратко объясним, что в первой строке (i=1;) мы присваиваем первой операции сложения условный номер “1”. Напомним, что во второй строке

Number = Convert::ToDouble(textBox1->Text);

введенное нами число считывается свойством Text, преобразовывается в тип double методом ToDouble и присваивается переменной Number.

Далее в строке (textBox1->Text = "";) окно очищается от предыдущего числа (чтобы его не удалять вручную). В строке (с подсказкой: bool System::Windows::Forms::Control::Focus(void))

textBox1->Focus();

программа размещает в окне курсор при помощи метода Focus(), чтобы нам не щелкать в окне перед вводом второго числа. Теперь (для программирования операции сложения) дважды щелкаем кнопку “=” (рис. 11.1) и в шаблон записываем:

double number2, number3; if (i==1)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number + number2;

textBox1->Text = number3.ToString();

}

В этом коде при помощи оператора if сложение выполняется только после того, как предварительно мы щелкнем кнопку “+”, программа присвоит целочисленной переменной i значение 1, и далее щелкнем кнопку “=”.

Поскольку несколько операций данного калькулятора выполняются после щелчка одной кнопки “=”, то далее мы будем дополнять метод этой кнопки для выполнения каждой последующей операции.

Для вычитания чисел аналогично (как для сложения) дважды щелкаем кнопку “-” (рис. 11.1) и в шаблон нового метода записываем:

i=2;

Number = Convert::ToDouble(textBox1->Text);

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