РАБОТА С ГРАФИКОЙ
Рисовать в программе можно непосредственно на поверхности формы либо выделяя на форме специальные области для рисования – это делается с помощью компонентов Image и PaintBox. Форма и указанные компоненты имеют свойство Canvas (Холст), которое позволяет выводить графику. Например, оператор Form1->Canvas->Rectangle(20, 20, 60, 60); рисует на поверхности формы прямоугольник. В следующей таблице приводятся методы свойства Canvas, позволяющие рисовать основные графические примитивы.
Методы вычерчивания графических примитивов
Для вывода отдельных точек используется свойство Pixels[x][y] свойства Canvas. Например, следующий оператор выводит на форму точку красного цвета с координатами (50, 50): Form1->Canvas->Pilxels[50][50]=clRed; Здесь clRed – именованная константа, соответствующая красному цвету. Для окрашивания точки в произвольный цвет используется функция RGB(red, green, blue), где параметры red, green, blue задают доли красного, зеленого и синего цвета в составе данного цвета и могут принимать значения в интервале (0, 255), например: Form1->Canvas->Pilxels[50][50]=RGB(0, 163, 78); Вышеописанные методы обеспечивают только вычерчивание графических примитивов. Вид графического элемента определяют свойства Pen (Карандаш) и Brush (Кисть) той поверхности (Canvas), на которой рисуется данный элемент. Карандаш и Кисть, являясь свойствами объекта Canvas, в свою очередь представляют собой объекты. Свойства объектов Pen и Brush описаны в следующих далее таблицах.
Свойства объекта Pen
Свойства объекта Brush
Свойство Font Холста позволяет изменять параметры шрифта. В следующей таблице описываются свойства объекта Font.
Cвойства объекта Font
Пример 1. Вывод в области рисования PaintBox красной точки и прямой линии черного цвета по нажатии точки. Запустите новый проект. Поместите на форме проекта компонент PaintBox (вкладка Win32) и кнопку Button. Для функции обработки нажатия кнопки напишите следующй код:
void __fastcall TForm1::Button1Click(TObject *Sender) {
PaintBox1->Canvas->Pixels[10][10]=clRed; PaintBox1->Canvas->MoveTo(50,50); PaintBox1->Canvas->LineTo(100,100); } Пример 2. Вывод заштрихованной окружности непосредственно на поверхность формы. Используем обработчик события OnPaint (перерисовка) формы. Для функции обработки события OnPaint напишите следующий код: void __fastcall TForm1::FormPaint(TObject *Sender) { Form1->Canvas->Ellipse(40,40,140,140); }
Пример 3. Использование объектов Pen и Brush. Поместите на форму еще одну кнопку Button. Для функции обработки щелчка по кнопке напишите следующий код: void __fastcall TForm1::Button2Click(TObject *Sender) { Form1->Canvas->Brush->Color=clRed; Form1->Canvas->Brush->Style=bsCross; Form1->Canvas->Pen->Width=3; Form1->Canvas->Ellipse(40,40,140,140); } Пример 4. Работа со шрифтом. Используйте обработчик события создания формы OnPaint. Добавьте код вывода текста в функцию обработки события перерисовки формы: void __fastcall TForm1::FormPaint(TObject *Sender) { Form1->Canvas->Ellipse(40,40,140,140); Form1->Canvas->Font->Name="Times New Roman"; Form1->Canvas->Font->Size=20; Form1->Canvas->Font->Color=clBlue; Form1->Canvas->TextOutA(100, 5, "Примеры работы с графикой в C++ Builder"); } Сохраните проект и проверьте его работу. Задание Написать программу, выводящую на форму график функции у(x) = sin(x)ex/5 в заданном пользователем интервале и с заданным шагом по x.
|