Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60105.doc
Скачиваний:
10
Добавлен:
01.05.2022
Размер:
827.9 Кб
Скачать

Работа с графикой

  1. Общие указания по выполнению лабораторной работы

    1. Цель работы

Изучение основных принципов рисования на поверхности компонентов.

    1. Используемое оборудование и программное обеспечение

Для выполнения лабораторной работы требуется ПЭВМ типа IBM PC с ОС Windows 2000 и выше, среда разработки Borland Delphi 7 или Borland C++ Builder.

  1. Домашнее задание и методические указания по его выполнению

    1. Поверхность рисования

Основной класс для связанных с рисованием графических операций – это TCanvas. С помощью его свойств и методов можно рисовать на поверхности визуальных объектов, которые включают в себя этот класс и, соответственно, имеют свойство Canvas. К ним относятся, например, такие объекты, как форма Form, надпись Lable, графический образ Image. Наиболее часто рисование производится на поверхности формы.

Поверхность рисования представляет собой объект класса TCanvas, иногда его называют холст. Холст имеет большое число свойство и методов, позволяющих перемещаться по поверхности рисования, отображать графические примитивы, копировать изображения и их отдельные области, а также выводить текстовую информацию.

Любая поверхность рисования включает в себя объекты пера TPen, кисти TBrush и шрифта TFont. Объекты пера и кисти используются для прорисовки и заполнения геометрических фигур, а объект шрифта позволяет управлять атрибутами текста, выводимого на поверхности.

При выполнении графических операций используется текущий указатель. Он представляет собой невидимый маркер, определяющий позицию на поверхности рисования, начиная с которой выполняется следующая графическая операция. Текущая позиция определяется горизонтальной и вертикальной координатами. По умолчанию начало системы координат находится в левом верхнем углу поверхности рисования, а отсчет координат осуществляется в пикселах.

Для перемещения текущего указателя в новую позицию можно использовать метод MoveTo(x, y: integer), перемещающий перо в новую позицию холста с координатами x и y. При таком перемещении на холсте ничего не рисуется. Положение текущего указателя также изменяют методы, связанные с выводом на холст фигур и текста: при их выполнении текущий указатель остается в позиции, где завершается процесс вывода.

При выполнении различных графических операций используются типы TPoint и TRect, которые описаны следующим образом:

TPoint = record

x: LongInt;

x: LongInt;

end;

TRect = record

Case integer of

0: (Left, Top, Right, Bottom: integer);

1: (TopLeft, RightBottom: TPoint);

end;

Тип TPoint используется для задания координат точки, а тип TRect служит для определения прямоугольной области путем указания координат левого верхнего и правого нижнего углов.

Для рисования геометрических фигур используются следующие методы:

  • Arc(x1, y1, x2, y2, x3, y3, x4, y4: integer) – дуга;

  • Chord(x1, y1, x2, y2, x3, y3, x4, y4: integer) – хорда;

  • Ellipse(x1, y1, x2, y2: integer) – эллипс с заполнением;

  • FillRect(const Rect: TRect) – прямоугольник с заполнением;

  • FrameRect(const Rect: TRect) – незаполненный прямоугольник (рамка);

  • LineTo(x, y: integer) – линия от указателя до точки с координатами x и y;

  • Polygon(const Points: array of TPoint) – многоугольник с заполнением;

  • PolyLine(const Points: array of TPoint) – незаполненный многоугольник;

  • Rectangle(x1, y1, x2, y2: integer) – заполненный прямоугольник;

  • RoundRect(x1, y1, x2, y2, x3, y3: integer) – заполненный прямоугольник со скругленными краями.

У методов Arc, Chord и Ellipse параметры x1 и y1 задают координаты левого верхнего угла, а параметры x2 и y2 – правого нижнего угла прямоугольника, ограничивающего дугу, хорду или эллипс, соответственно. Параметры x3 и y3, x4 и y4 определяют координаты начальной и конечной точек дуги или хорды.

У методов Rectangle и RoundRect параметры x1 и y1 задают координаты левого верхнего угла, а параметры x2 и y2 – координаты правого нижнего угла прорисовываемого прямоугольника.

У методов Polygon и PolyLine параметр Points представляет собой массив с координатами вершин многоугольника.

Параметры линий фигур и их заполнение определяют текущие значения свойств пера и кисти поверхности рисования.

Для операций с выводимой на поверхность рисования текстовой информацией предназначены следующие методы и свойства.

Для отображения текстовой информации на поверхность рисования предназначен метод TextOut(x, y: integer; test: string). Эта процедура выводит строку текста, заданную параметром text, при этом координаты x и y устанавливают левый верхний угол области вывода. Параметры шрифта определяются текущим значением свойства Font поверхности, на которой отображается текст.

Важным свойством объекта класса TCanvas является свойство Pixels(x, y: integer) типа TColor, которое определяет цвет пиксела в точке, указанной индексами x и y двумерного массива координат. Это свойство доступно как для чтения, так и для записи.

Объекты класса TCanvas включают в себя объекта TFont, TPen и TBrush и, соответственно, имеют свойства Font, Pen и Brush.

Свойство Font устанавливает параметры шрифта, применяемого для отображения текста на поверхности рисования. Управление параметрами шрифта осуществляется через его свойства Name, Size, Style и др.

Свойство Pen определяет атрибуты пера, применяемого для рисования линий и границ геометрических фигур. Управление атрибутами пера осуществляется через его свойства, основными из которых являются следующие:

  • Color – цвет пера;

  • Style – стиль рисуемой линии; может принимать следующие значения: psSolid – сплошная линия (по умолчанию), psDash – штриховая линия, psDot – пунктирная линия, psDashDot – штрихпунктирная линия, psDashDotDot – линия вида штрих-точка-точка, psClear – невидимая линия, psInsideFrame – линия внутри прямоугольника поверхности рисования;

  • Mode – способ, в соответствии с которым перо при рисовании линии взаимодействует с имеющимися на холсте пикселами.

Свойство Brush определяет узор, используемый для заполнения геометрических фигур, например, прямоугольника или эллипса. Управление заполнением фигур осуществляется через свойства кисти, основными из которых являются следующие:

  • Color – цвет кисти;

  • Style – стиль кисти: bsSolid – сплошная заливка, bsClear – заливка отсутствует, bsHorixontal – параллельные горизонтальные линии, bsVertical – параллельные вертикальные линии, bsFDiagonal – параллельные диагональные линии, направленные вверх, bsBDiagonal – параллельные диагональные линии, направленные вниз, bsCross – прямая решетка, bsDiagCross – диагональная решетка;

  • Bitmap – растровое изображение, используемое в качестве стиля кисти.

Для определения текущего положения пера используется свойство PenPos типа TPoint.

При изменении содержимого поверхности рисования генерируются события OnChanging и OnChange. Первое из них возникает перед модификацией поверхности, а второе – после.

Т.к. свойство Canvas на этапе проектирования недоступно, то обработчики его событий программируются вручную.

Для примера нарисуем на форме несколько вложенных друг в друга квадратов:

// - - - - Object Pascal - - - -

var

i: integer;

x1, y1, x2, y2: integer;

brush_color: TColor;

begin

x1 := 100;

y1 := 100;

x2 := 300;

y2 := 300;

brush_color := 400;

for i := 1 to 5 do

begin

Canvas.Brush.Color := brush_color;

Canvas.Rectangle(x1, y1, x2, y2);

x1 := x1 + 10;

y1 := y1 + 10;

x2 := x2 - 10;

y2 := y2 - 10;

brush_color := brush_color + 25;

end;

// - - - - - - - C++ - - - - - - -

int x1 = 100, y1 = 100, x2 = 300, y2 = 300;

TColor brush_color = 400;

for (int i = 0; i < 5; i++)

{

Canvas->Brush->Color = brush_color;

Canvas->Rectangle(x1, y1, x2, y2);

x1 += 10;

x2 -= 10;

y1 += 10;

y2 -= 10;

brush_color += 25;

}

Результат работы программы приведен на рис. 29

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]