Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с графикой.doc
Скачиваний:
6
Добавлен:
04.12.2018
Размер:
305.66 Кб
Скачать

Свойства холста

Выше были перечислены самые важные свойства холста, которые активно используются в процессе вывода графической информации. Однако помимо них необходимо отметить некоторые свойства самого класса TCanvas, приведенные в табл. 5. Класс TCanvas содержит большое количество методов. Их краткое описание приведено в табл. 6.

Таблица 5. Некоторые свойства класса TCanvas

Свойство

Назначение

CanvasOrientation

Данное свойство, доступное только для чтения, определяет позицию начала координат. Значение по умолчанию —coLeftToRight (отсчет ведется от левого верхнего угла клиентской области). В некоторых случаях используется значение coRightToLeft (когда в соответствии с национальными требованиями текст пишется справа налево). В этом случае отсчет идет от верхнего правого угла

ClipRect

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

CopyMode

Режим копирования графического образа на холст. С помощью данного свойства удается создавать самые разные графические и анимационные эффекты путем выполнения операций логического сложения, умножения инвертирования битов исходной и результирующей графических областей. Например, значение cmSrcInvert (логическая операция X0R) активно применяется при перемещении спрайтов

PenPos

Текущая позиция графического курсора (тип TPoint)

Pixels

Двумерный массив, хранящий цвета каждого пиксела изображения. Это свойство очень полезно при поточечной обработке рисунка, однако им нельзя злоупотреблять, так как обработка отдельных пикселов — весьма медленная операция. Пример использования: Canvas.Pixels[123,50] :=clRed;

TextFlags

Способ вывода текста на холст. Возможные значения: — ETO_CLIPPED (обычный вывод, по умолчанию); ETOJDPAQUE (вывод текста с заливкой фона, что ускоряет процесс вывода, но перекрывает фоновый рисунок)

Таблица 6. Краткое описание методов класса TCanvas

Метод

Назначение

procedure Arc( XI, Y1, Х2, Y2, ХЗ, Y3, Х4, Y4: Integer);

Рисование части эллипса. Параметры XI, Y1, Х2, Y2 определяют прямоугольник в который вписан эллипс, а параметры ХЗ, Y3, Х4, Y4 задают начальную и конечную точку дуги эллипса (или ближайшую). Дуга чертится против часовой стрелки.

procedure BrushCopy(const Dest: TRect; Bitmap: TBitmap; const Source: TRect; Color: TColor);

Копирование заданной части графического изображения на холст. При этом цвет, указанный в качестве параметра, трактуется как прозрачный (не отображаемый на экране)

procedure Chord( XI, Yl, X2, Y2, X3, Y3, X4, Y4): Integer;

Рисуется замкнутая фигура, созданная пересечением эллипса и отрезка прямой линии (хорды)

procedure CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect);

Копирование на данный холст области с другого холста. Способ вывода определяется значением свойства CopyMode

procedure Draw(X, Y: Integer; Graphic: TGraphic);

Вывод графического изображения в заданной точке холста

procedure DrawFocusRect( const Rect: TRect);

Рисуется прямоугольник в стиле, принятом в Windows для отображения элементов, имеющих фокус. Повторный вывод такого прямоугольника в том же месте приводит к его исчезновению (логическая операция X0R)

procedure Ellipse(const Rect: TRect);

procedure Ellipse(XI, Yl, X2, Y2:integer);

Рисуется эллипс, вписанный в прямоугольник

procedure FillRect(const Rect: TRect);

Рисуется прямоугольник, который заполняется в соответствии со значением свойства Brush

procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);

Заполнение указанным цветом области холста, прилегающей к точке, заданной в качестве параметра, и имеющей цвет, совпадающий с цветом этой точки

procedure FrameRect(const Rect: TRect);

Рисуется прямоугольник заданного размера с толщиной границы в 1 пиксел. Вид линии определяется значением свойства Brush

procedure LineTo(X, Y: Integer);

Рисует линию от точки, определенной свойством PenPos (текущая позиция графического курсора) до точки, указанной в качестве параметра

procedure MoveTo(X, Y: Integer);

Устанавливает текущую позицию графического курсора в точку, заданную в параметрах метода

procedure Pie( XI, Yl, X2, Y2, X3, Y3, X4, Y4: Longint);

Рисуется сектор эллипса, расположенный внутри заданного прямоугольника

procedure PolyBezier( const Points: array of TPoint);

Рисуется кривая Безье — гладкая линия, соединяющая заданные точки. Точки передаются в динамическом массиве, состоящем из элементов типа TPoint. При рисовании очередного фрагмента линии учитываются три последовательные точки

procedure PolyBezierTo( const Points: array of TPoint);

Метод аналогичен предыдущему, но по окончании отрисовки линии графический курсор перемещается в ее последнюю точку. Значение свойства PenPos, в отличие от метода PolyBezier, когда графический курсор остается на старом месте, обновляется

procedure Polygon( Points: array of TPoint);

Рисуется сложная фигура, состоящая из отрезков, последовательно соединяющих точки, представленные в виде динамического массива элементов TPoint. Последняя точка соединяется с первой. Внутренняя часть фигуры заполняется в соответствии со значением свойства Brush

procedure Polyline( Points: array of TPoint)

Метод аналогичен предыдущему, но заполнения внутренней части фигуры не происходит

procedure Rectangle(const Rect: TRect);

Рисуется прямоугольник. Его внутренняя область заполняется в соответствии со значением свойства Brush

procedure RoundRect( XI, Y1,X2,Y2,X3,Y3: Integer);

Метод аналогичен предыдущему. Рисуется прямоугольник со скругленными углами

procedure StretchDraw(const Rect: TRect; Graphic: TGraphic);

Вывод графического изображения в область, заданную параметром-прямоугольником. Изображение масштабируется в соответствии с размерами этого прямоугольника

function TextExtent( const Text: string): TSize;

Возвращает ширину и высоту в пикселах строки, выведенной текущим шрифтом

function TextHeight( const Text: string): Integer;

Возвращает высоту в пикселах строки, выведенной текущим шрифтом

procedure TextOut(X, Y: Integer; const Text: string);

Вывод строки в конкретную позицию холста

procedure TextRect(Rect: TRect; X, Y: Integer; const Text: string);

Вывод строки в указанную позицию в рамках прямоугольника Rect. Часть строки, не попавшая в указанную область, на холст не выводится

function TextWidth( const Text: string): Integer;

Ширина в пикселах строки, выведенной текущим шрифтом