Лекции.ИНФО


Установка стиля и цвета закраски. Закрашивание фигур.



После того как Вы нарисовали картинку, у Вас, верно, возникло желание ее раскрасить. Для этого есть различные способы. Познакомимся с одним из них – “заливкой” замкнутых площадей различными видами заполнения. Для этого существуют две процедуры SetFillStyle и FloodFill.

SetFillStyle (Pattern, Color), где переменные Pattern, Color типа Word – определяет стиль заполнения и цвет заполнения.

Значения Pattern можно взять из следующей таблицы:

Стандартные стили заполнения
Константа Код Маска-заполнение
EmptyFill цветом фона
SolidFill текущим цветом
LineFill символами - -, цвет – Color
LtSlashFill символами //норм. толщины, цвет – Color
SlashFill символами //удвоенной толщины, цвет – Color
BkSlashFill символами \\удвоенной толщины, цвет – Color
LtBkSlashFill символами \\норм. толщины, цвет – Color
HatchFill вертикально-горизонтальная штриховка тонкими линиями, цвет – Color
XhatchFill штриховка крест-накрест по диагонали “редкими” тонкими линиями, цвет – Color
InterLeaveFill штриховка крест-накрест по диагонали “частыми” тонкими линиями, цвет – Color
WideDotFill “редкие” точки
CloseDotFill “частые” точки

Например, если мы употребили процедуру

SetFillStyle (WideDotFill, Red) или SetFillStyle (10, 4),

то выбрали стиль закраски “редкими” точками красного цвета

Теперь же, когда Вы указали компьютеру ЧЕМ Вы будете закрашивать (стиль и цвет), можно указать, ЧТО Вы будете закрашивать. Для этого существует процедура

FloodFill(X, Y, ColorBorder),где X, Y переменные типа integer, а Border – переменная типа word -процедура, которая позволяет заполнить замкнутую область выбранным стилем и цветом закраски. Необходимо только выполнить несколько требований:

• первые два параметра (X, Y) являются координатами так называемой “затравочной” точки, т. е. точки, лежащей обязательно внутри закрашиваемой области;

• ColorBorder – параметр, обозначающий цвет, которым нарисована закрашиваемая фигура (так называемый цвет “бордюрчика”);

• фигура должна быть начерчена одним цветом;

• фигура должна быть замкнута.

Например, пусть следующая фигура начерчена синим цветом

(x,y)

Чтобы закрасить ее выбранным стилем и цветом (“редкие” точки красного цвета, см. выше) нужно дать команду FloodFill(180, 200, 1).

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

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

SetBkColor(Color), где переменная Color типа Word – процедура, устанавливающая цвет фона.

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

ClеarDeviсe – процедура, которая очищает экран и устанавливает курсор в позицию (0,0).

GraphDefaults – cбрасывает заданные пользователем параметры графического режима и устанавливает исходные (определяемые по умолчанию при запуске процедуры InitGraph).

Задание. Раскрасьте кораблик, используя различные стили и цвета. Покажите учителю полученную картинку и листинг программы.

Занятие 3: Вывод текста.

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

OutText('текст'), где переменная 'текст' типа String – выводит текстовую строку, начиная с текущего положения указателя. При горизонтальном направлении вывода указатель смещается в конец выведенного текста, при вертикальном – не меняет своего положения. Строка выводится в соответствии с установленным стилем и выравниванием.

Примечание. Если текст выходит за границы экрана, то при использовании штриховых шрифтов он отсекается, а в случае стандартного шрифта не выводится.

OutTextXY(X, Y, 'текст'), где переменные X, Y типа Integer , а 'текст' типа String – выводит строку 'текст', начиная с точки с координатами X, Y. Указатель не меняет своего положения.

Например, после применения процедуры OutTextXY(100, 50, 'Grafika in Turbo Pascal') на экране будет высвечена строка Grafika in Turbo Pascal, начиная с точки с координатами (100,50).

SetTextStyle(Font; Direct; Size), где переменные Font и Direct типа word, а Size типа Integer – устанавливает стиль текстового вывода на графический экран. Здесь переменная Font указывает на код (номер) шрифта, Direct – код направления, а Size – код размера шрифта.

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

Номер Описание
точечный шрифт 8х8
утроенный шрифт
уменьшенный шрифт
прямой шрифт
готический шрифт
“рукописный” шрифт
одноштриховый шрифт типа Courier
красивый наклонный шрифт типа Times Italic
шрифт типа Times Roman
шрифт типа Courier увеличенного размера
крупный двухштриховый шрифт

Cреди этих шрифтов только DefaultFont (код 0) является матричным шрифтом, т.е. его символы создаются из матриц 8х8 пикселей. Все остальные шрифты – векторные, их элементы формируются как совокупность векторов определенного направления и размера.

Примечание. Русскоязычные сообщения можно выводить в графическом режиме с помощью шрифта DefaultFont.

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

0 – слева направо

1 – снизу вверх

Размер выводимых символов задается параметром Size, который имеет диапазон от 1 до 10 (матричный шрифт от 1 до 32).

SetTextJustify (Horiz,Vert), где переменные Horiz и Vert типа word – задает выравнивание текста по отношению к текущему положению указателя или к заданным координатам. Здесь Horiz – горизонтальное выравнивание, а Vert – вертикальное выравнивание.

Выравнивание определяет как будет размещаться текст – левее или правее указанного места, выше, ниже или по центру.

Можно использовать следующие константы:

Для Horiz:

LeftText = 0 (указатель слева от текста);

CenterText = 1 (симметрично слева и справа);

RightText = 2 (указатель справа от текста);

Для Vert:

BottonText = 0 (указатель снизу от текста);

CenterText = 1 (симметрично снизу и сверху);

TopText = 2 (указатель сверху от текста);

Обратите внимание на неудачные имена констант. Если Вам надо расположить текст справа от заданных координат (процедура OutTextXY), то нужно задать константу LeftText, что в переводе с английского означает “Левый текст”.

SetUserCharSize (X1, X2, Y1, Y2), где переменные X1, X2, Y1, Y2 типа word – изменяет размер выводимых символов в соответствии с заданными пропорциями. Пропорции задают масштабный коэффициент, показывающий во сколько раз увеличится ширина и высота выводимых символов по отношению к стандартно заданным значениям. Коэффициент по горизонтали находится как отношение X1 к X2, по вертикали Y1, Y2. Например, чтобы удвоить ширину символов, необходимо задать Х1=2 и Х2=1. Стандартный размер символов устанавливается процедурой SetTextStyle, которая отменяет предшествующее ей обращение к SetUserCharSize.

GraphDefaults – cбрасывает заданные пользователем параметры графического режима и устанавливает исходные (определяемые по умолчанию при запуске процедуры InitGraph).

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

Решение задач.

Выберите с учителем задачи для решения из предложенного ниже списка:

1. Построить и подписать вершины

а) треугольника с вершинами (200,200), (250,200), (180,270);

б) прямоугольника с вершинами (80,80), (170, 80), (170, 50), (80,150);

2. Нарисовать человечка и подписать его части тела.

3. Составьте программу черчения на экране прямой, отрезка, луча и угла таким образом, чтобы каждый объект появлялся после нажатия клавиши <Enter>. Предыдущий объект должен стираться. Подписывайте каждый раз выводимый объект.

4. Составьте программу черчения на экране треугольника, прямоугольника и круга таким образом, чтобы каждый объект появлялся после нажатия клавиши <Enter>. Предыдущий объект должен стираться. Подписывайте каждый раз выводимый объект.

5. Написать на экране введенную строку пятью различными стилями.

6. Написать программу для вычерчивания на экране своего имени с помощью символа «*».

7. Построите на экране все виды углов и подпишите. (Углы бывают острыми, тупыми, прямыми и развернутыми.)

8. Начертить на экране все известные Вам графические объекты.

9. Построить снеговика, разукрасить его по своему вкусу. Дайте картинке название.

10. Нарисовать 3 карандаша разного цвета.









Последнее изменение этой страницы: 2017-03-17; Просмотров: 26;


lektsia.info 2017 год. Все права принадлежат их авторам! Главная