Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Grafika_Turbo-Pascal.doc
Скачиваний:
24
Добавлен:
08.03.2015
Размер:
362.5 Кб
Скачать

Выбор цвета, стиля заполнения.

Для вывода информации на экран с использованием цвета в Graph.tpu определены процедуры позволяющие выбирать цвет выводимого изображения, текущий фон : SetColor, SetBKColor

При построении линий, многоугольников пользователь может задать вид линий (сплошные, пуктирные, состоящие из точек и тире, заданные самим пользователем) и цвет процедурой SetLineStyle. Для вывода закрашенных изображений используются различные виды штриховки, устанавливаемые процедурами SetFillStyle и SetFloodPattern.

Константы цветности следующие:

const

Black (черный) = 0;

Blue (голубой) = 1;

Green (зеленый) = 2;

Cyan (бирюзовый) = 3;

Red (красный) = 4;

Magents (малиновый) = 5;

Brown (коричневый) = 6;

LightGray (светло-серый) = 7;

DarkGray (темно-серый) = 8;

LightBlue (светло-голубой) = 9;

LightGreen (светло-зеленый) = 10;

LightCyan (светло-бирюзовый) = 11;

LightRed (светло-красный) = 12;

LightMagenta (светло-малиновый) = 13;

Yellow (желтый) = 14;

White (белый) = 15;

MaxColor (максимальное количество

цветов ) = 15;

SetColor( Color : word) - процедура установки цвета изображения , указанного значением Сolor, из текущей палитры. По умолчанию выбирается максимальный цвет палитры.

SetBkColor (Color : word) - процедура установки текущего фонового цвета, используя заданную палитру. Выполнение процедуры для Color, равного 0, т.е. SetBkColor(0) всегда приводит к установке черного цвета фона, этот же режим устанавливается по умолчанию. Пример программы, выводящей различные линии на различном фоне.

Uses Crt,Graph;

Var Driver,Mode:integer;

Palette:PaletteType;

Begin

Driver:=Detect;

InitGraph(Driver,Mode,'');

Randomize;

repeat

SetBKColor(Random(GetPaletteSize));

SetColor(Random(GetMaxColor)+1);

LineTo(Random(GetMaxX),Random(GetMaxY));

Delay(200);

until KeyPressed;

CloseGraph;

End.

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

SetLineStyle(LineStyle,Pattern,Thickness:word) - процедура установки стиля вычерчивания линии, где :

LineStyle - тип линии, задается константами:

const

SolidLine = 0 { сплошная }

DottedLine= 1 { точки }

CenterLn = 2 { точки и тире }

DashedLn = 3 { пунктирная }

UserBitLn = 4 { определяется пользователем }

Thickness - толщина линии, задается константами:

const

NormWidth = 1 { нормальная }

ThickWidth= 3 { увеличенная }

Если стиль выводимой линии использует тип линии от 0 до 3, то параметр Pattern игнорируется , в противном случае пользователь должен задать шаблон линии параметром Pattern, который определяет отрезок линии в 16 пикселей, устанавливая в 1 бит для светящегося символа, 0 - для несветящегося, повторяющийся по всей длине линий.

Пример. Вывод линий всех видов.

Uses Graph;

Var Driver,Mode,i:integer;

Begin

Driver:=Detect;

InitGraph (Driver, Mode,'');

if GraphResult=0 then

begin

SetColor(2);

for i:=0 to 3 do

begin

SetLineStyle(i,0,NormWidth);

SetColor(i+1);

Line(10,i*50+1,250,i*50+1);

end

end;

readln;

CloseGraph

end.

Для управления стилем заполнения изображений определена

процедура :

SetFillStyle(Pattern:word; Color:word) - установка шаблона Pattern и цвета Color заполнения перед выполнением процедур FillPoly, Bar, Bar3D, PieSlise. По умолчанию данные процедуры используют сплошной шаблон заполнения с MaxColor в палитре.

Константы шаблона заполнения области:

const

EmptyFill =0; {штриховка фоном (узор отсутствует)}

SolidFill =1; {сплошная штриховка)}

LineFill =2; {штриховка линиями)}

LtSlaashFill =3; {штриховка ///////}

SlashFill =4; {штриховка утолщенными /////}

BkSlashFill =5; {штриховка \\\\\\\}

LtBkSlashFill =6; {штриховка утолщенными \\\\\\\}

HatchFill =7; {штриховка +++++++}

XHatchFill =8; {штриховка xxxxxxx}

InterleaveFill=9; {штриховка в прямоугольную клеточку}

WideDotFill =10;{штриховка редкими точками}

CloseDotFill =11;{штриховка частыми точками}

UserFill =12;{штриховка определяется пользователем}

Если Pattern выбирается равным UserFill, то шаблон заданный пользователем становится активным. Пример шаблона, заполнен ного пользователем см. в разделе 3.2. Данная процедура игнорируется, если какая-либо часть области не вмещает три элемента шаблона.

Пример.

Uses Graph;

Var Driver,Mode,i:integer;

Begin

Driver:=Detect;

InitGraph (Driver, Mode,'');

Randomize;

if GraphResult=0 then

begin

SetColor(2);

for i:=1 to 11 do

begin

SetFillStyle(i,1);

SetColor(Random(GetMaxColor));

Bar(10,10,200,150);

readln

end

end;

readln;

CloseGraph

end.

FloodFill(X,Y:integer; Border:word) - процедура заполнения, ограниченной замкнутой линией цвета Border. Образец заполнеия из SetFiilStyle или SetFillPattern. Если точка (X,Y) является внутренней точкой заполняемой области, то закрашивается область. Иначе происходит заполнение внешней части области.

Пример заполнения окружности штриховкой частыми точками зеленого цвета.

Uses Graph;

Var Driver,Mode,i:integer;

Begin

Driver:=Cga;

Mode:=0;

InitGraph (Driver, Mode,'');

SetColor(2);

Circle(50,50,30);

SetFillStyle(CloseDotFill,1)

FloodFill(50,50,2)

CloseGraph

End.

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