Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Рисование с помощью пера Pen




 

У канвы имеется свойство Реn — перо. Это объект, в свою очередь, имеющий ряд свойств.

Свойство Style определяет вид линии.

Все стили со штрихами и пунктирами доступны только при Width = 1. В про­тивном случае линии этих стилей рисуются как сплошные.

Стиль psInsideFrame — единственный, который допускает произвольные цве­та. Цвет линии при остальных стилях округляется до ближайшего из палитры Windows.

У канвы имеется свойство PenPos типа TPoint. Это свойство определяет в ко­ординатах канвы текущую позицию пера. Перемещение пера без прорисовки ли­нии, т.е. изменение PenPos, производится методом канвы MoveTo(X,Y). Здесь X и Y — координаты точки, в которую перемещается перо. Эта текущая точка стано­вится исходной, от которой методом LineTo(X,Y) можно провести линию в точку с координатами (X,Y). При этом текущая точка перемещается в конечную точку ли­нии и новый вызов LineTo будет проводить линию из этой новой текущей точки.

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

Image2.Canvas.MoveTo(0,Image2.Height div 2);

который переводит перо в начало координат второго графика — на левый край канвы в середину ее высоты. А перед заключительным end цикла добавьте оператор

Image2.Canvas.LineTo(PX, PY);

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

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

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

Это позволяет легко осуществлять приложения, в которых пользователю предоставляется возможность увеличивать и просматривать в деталях какие-то фрагменты графиков.

Перо может рисовать не только прямые линии, но и фигуры. Ниже перечисле­ны некоторые из методов канвы, использующие перо для рисования фигур:

Arc - Рисует дугу окружности или эллипса

Chord - Рисует замкнутую фигуру, ограниченную дугой окружности или эллипса и хордой

Pie - Рисует сектор окружности или эллипса

PolyBezier - Рисует кусочную кривую третьего порядка

Polygon - Рисует замкнутую фигуру с кусочно-линейной границей

Polyline - Рисует кусочно-линейную кривую

Rectangle - Рисует прямоугольник

RoundRect - Рисует прямоугольник со скругленными углами

Ниже приведен текст процедуры, которая рисовала некоторые фигуры, приведенные в вышележащей таблице.

with Imagel.Canvas do begin

Font.Style:= [fsBold];

Arc(10,10,90,90,90,50,10,50);

TextOut(40,60,'Arc');

Chord(110,10,190,90,190,50,110,50);

TextOut (135,60, 'Chord');

Ellipse (210,10,290,50);

TextOut(230,60,'Ellipse');

end.

 




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


Дата добавления: 2015-03-29; Просмотров: 412; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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