Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Методы для рисования простейшей графики




procedure Arc (XI, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4: Integer); Метод рисует сегмент эллипса. Эллипс определяется описывающим прямоугольником (X1,Y1) — (X2,Y2); его размеры должны лежать в диапазоне от 2 до 32767 точек. Начальная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X3.Y3). Конечная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X4.Y4). Сегмент рисуется против часовой стрелки.

Пример

procedure TForm1.Button1Click(Sender: TObject);

begin

With Canvas do

Begin

Pen.Width:=2;

Arc(10,20,200,100,100,100,0,0);

end;

end;

 

procedure Chord (Xl, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4: Integer);Рисует хорду и заливает отсекаемую ею часть эллипса. Эллипс, начальная и конечная точки определяются, как в методе Arc.

procedure Ellipse (Xl, Yl, Х2, Y2: Integer); Рисует и закрашивает эллипс, вписанный в прямоугольник (X1.Y1) — (X2.Y2).

procedure LineTo (X, Y: Integer); Проводит линию текущим пером из текущей точки в (X,Y).

procedure MoveTo (X, Y: Integer); Перемещает текущее положение пера (свойство PenPos) в точку (X,Y).

procedure BrushCopy (const Dest: TRect; Bitmap: TBitmap; const Source: TRect; Color: TColor); Производит специальное копирование. Прямоугольник Source из битовой карты Bitmap копируется в прямоугольник Dest на канве; при этом цвет Color заменяется на цвет текущей кисти (Brush.Color). С помощью этого метода можно нарисовать "прозрачную" картинку. Для этого нужно выбрать соответствующий фону цвет кисти и затем заменить на него фоновый или наиболее часто встречающийся цвет битовой карты (см. Bitmap. TransparentColor).

procedure CopyRect (const Dest: TRect; Canvas: TCanvas; const Source: TRect); Производит копирование прямоугольника Source из канвы Canvas в прямоугольник Dest в области самого объекта.

procedure FillRect (const Rect: TRect);Производит заливку прямоугольника (текущей кистью).

procedure FrameRect (const Rect: TRect); Производит оконтуривание прямоугольника цветом текущей кисти (без заполнения).

procedure Draw (X, Y: Integer; Graphic: TGraphic); Осуществляет рисование графического объекта Graphic (точнее, вызов метода его рисования) в области с верхним левым углом (X,Y).

procedure StretchDraw (const Rect: TRect; Graphic: TGraphic); Осуществляет рисование объекта Graphic в заданном прямоугольнике Rect. Если размеры их не совпадают, Graphic масштабируется.

procedure DrawFocusRect (const Rect: TRect); Производит отрисовку прямоугольной рамки из точек (как на элементе, имеющем фокус ввода). Поскольку метод использует логическую операцию XOR (исключающее ИЛИ), повторный вызов для того же прямоугольника приводит изображение к начальному виду.

procedure FloodFil(X, Y: Integer; Color: TColor; FillStyle: TFillStyle); TFillStyle = (fsSurface, fsBorder); Производит заливку области текущей кистью. Процесс начинается с точки (X,Y). Если режим FillStyle равен fsSurface, то он продолжается до тех пор, пока есть соседние точки с цветом Color. В режиме fsBorder закрашивание, наоборот, прекращается при выходе на границу с цветом Color.

procedure Pie (XI, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4: Integer)- Рисует сектор эллипса, описываемого прямоугольником (X1,Y1) — (X2,Y2). Стороны сектора лежат на лучах, проходящих из центра эллипса через точки (X3.Y3) и (X4,Y4).

procedure Polygon (const Points: array of TPoint); Строит многоугольник, используя массив координат точек Points. При этом последняя точка соединяется с первой и внутренняя область закрашивается.

procedure Polyline (const Points: array of TPoint);Строит ломаную линию, используя массив координат точек Points.

procedure Rectangle (XI, Yl, Х2, Y2: Integer); Рисует прямоугольник с верхним левым углом в (XI,Y1) и нижним правым в (X2.Y2).

procedure RoundRect (XI, Yl, Х2, Y2, ХЗ, Y3: Integer); Рисует прямоугольник с закругленными углами. Координаты вершин — те же, что и в методе Rectangle. Закругления рисуются как сегменты эллипса с размерами осей по горизонтали и вертикали ХЗ и Y3.

function. TextHeight (const Text: string): Integer; Возвращает высоту строки Text в пикселах.

function TextWidth (const Text: string): Integer; Возвращает ширину строки Text в пикселах.

procedure TextOut (X, Y: Integer; const Text: string); Производит вывод строки Text. Левый верхний угол помещается в точку канвы (X,Y).

procedure TextRect (Rect: TRect; X, Y: Integer; const Text: string); Производит вывод текста с отсечением. Как и в TextOut, строка Text выводится с позиции (X,Y); при этом часть текста, лежащая вне пределов прямоугольника Rect, отсекается и не будет видна.

 

procedure Refresh сбрасывает текущие шрифт, перо и кисть, заменяя их на стандартные, заимствованные из Windows (BLACK.PEN, HOLLOW_BRUSH, SYSTEM.FONT).

Предусмотрено два события для пользовательской реакции на изменение канвы:

property OnChange: TNotifyEvent;

property OnChanging: TNotifyEvent;

Эти события возникают при изменениях свойств и вызовах методов TCanvas, меняющих вид холста (то есть при любом рисовании (в MoveTo, например, они не возникают). Отличие их в том, что OnChanging вызывается до начала изменений, a OnChange — после их завершения.

Идентификатор (код) растровой операции при копировании прямоугольных блоков содержится в свойстве CopyMode: типа TCopyMode; и определяет правило сочетания пикселов, копируемых на холст, с ее текущим содержимым. При этом можно создавать разные изобразительные эффекты. В Delphi определены следующие константы кодов: cmBlackness, cmDstInvert, cmMergeCopy, cmMergePaint, cmNotSrcCopy, cmNotSrcErase, cmPatCopy, cmPatInvert, cmPatPaint, cmSrcAnd, cmSrcCopy, cmSrcErase, cmSrcInvert, cmSrcPaint, cmWhiteness.

Все они стандартно определены в Windows, и подробное их описание можно найти в документации по GDI. Значением CopyMode по умолчанию является cmSrcCopy — копирование пикселов источника поверх существующих.

Помимо графических примитивов, таких как линии и фигуры, на канве можно разместить готовые изображения. Для их описания создан класс TGraphic.

 




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 454; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.