Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lexzii_08 / lexs_10_graf.DOC
Скачиваний:
19
Добавлен:
17.05.2015
Размер:
718 Кб
Скачать
☆

Зафарбований еліпс з контуром можна отримати, виконавши функцію

Fillellipse (x, y, rx, ry );

де x, y – координати центра;

rx, ry – довжина полувісів еліпса в пікселях. Замальовується поточним кольором. Осі еліпса паралельні осям координат.

10. Зафарбований круговий сектор з контуром рисує функція

pieslice(x, y, поч_ кут, кін_кут, радіус);

Після приведення кутів до діапазону [0..360] сектор рисується від меншого значення кута до більшого, тому неможливо зобразити сектор, який перетинає додатній напрямок вісі 0Х. Контур (дуга і два радіуси) рисується після зафарбування сектора, причому тип і товщина лінії беруться із установок функції setlinestile ( ). Якщо потрібен сектор без контуру, це можна створити так:

setcolor (BLACK); setbkcolor (BLUE);

setwritemode (XOR_PUT);

setfillstyle (WIDE_DOT_FILL, RED);

pieslice (200, 100, 45, 90, 50);

Приклад кругових секторів з надписами на них.

setbkcolor (BLUE);

setcolor (RED);

setfillstyle (1, 3);

x= getmaxx ( ) / 2;

y= getmaxy( ) / 2;

pieslice (x, y, 270, 360, 100);

setfillstyle (1, 2);

pieslice (x, y, 0, 270, 100);

settextstyle (1, 0, 2);

moveto (x-20, y-40); outtext(“75%”);

moveto (x+20, y+20); outtext(“25%”);

11. Зафарбований елиптичний сектор з контуром, отримаємо, використавши функцію

setctor (x, y, поч_кут, кін_кут, rx, ry);

12. Зафарбування довільної замкнутої області виконується функцією

floоdfill (x, y, границя);

де x, y – координати точки всередині області.

Контур, який обмежує область, повинен бути замкнутим, інакше “фарба прол’ється” на іншу частину екрана. Колір контура повинен співпадати зі значенням параметра межі.

Зафарбування (колір, тип) встановлюється функцією setfillstyle( ).

Приклад: сім концентричних червоно-блакитних кіл.

setlinestyle(0, 0, 1);

setbcolor(GREEN);

for (i =7; i>=1; i-- )

if ( i % 2 )

{ setcolor (BLUE);

circle ( x, y, 5*i );

setfillstyle ( SOLID_FILL, BLUE);

floodfill ( x,y, BLUE );

}

else

{

setcolor ( RED );

circle ( x, y, 5*i );

setfillstule (SOLID_FILL, RED);

floadfill (x, y, RED);

}

Приклад: рух прямокутника зліва направо:

setlinestyle (0, 0, 1);

setwritemode (XOR_PUT); // для стирання ліній

setbkcolor (BLUE); //для встановлення кольору

setfillstyle (1, RED);

restangle (1, 90, 10, 110); //нарисували зафарбований

bar (1, 90, 10, 10); //червоний прямокутник

getch (); //після натискання будь-якої клавіші

//він поїде вправо

for ( i=11; i<=300; i++)

{

line ( i- 10, 90, i-10, 110 ); // знищуєм сторону зліва

line( i, 90, i, 110 ); //дорисовуємо лінію справа.

13. Зафарбування прямокутника виконує функція

Bar(x1, y1, x2, y2);

Сторони його паралельні осям координат; контур не вимальовується. Стиль зафарбування встановлюється функцією

setfillstyle( );

x1,y1 – координати лівого верхнього кута,

x2,y2 – координати правого нижнього кута.

// Кораблик з парусом

#include <graphics.h>

#include <conio.h>

void main()

{

int gdriver = DETECT, gmode;

initgraph(&gdriver, &gmode, "d:\\lang\\tc\\bgi");

setfillstyle(SOLID_FILL,LIGHTBLUE);

bar(0,342,639,479);

setfillstyle(SOLID_FILL,LIGHTCYAN);

floodfill(502,97,LIGHTBLUE);

moveto(157,314);

setcolor(BROWN);

lineto(459,314);

lineto(406,362);

lineto(189,362);

lineto(156,314);

setfillstyle(SOLID_FILL,DARKGRAY);

floodfill(289,332,BROWN);

setcolor(BLACK);

line(302,327,302,134);

setcolor(BROWN);

arc(309,211,293,65,77);

arc(194,212,312,48,94);

line(256,141,342,141);

line(256,283,340,283);

setfillstyle(SOLID_FILL,WHITE);

floodfill(284,152,BROWN);

getch(); closegraph(); }

11

Соседние файлы в папке lexzii_08