Заполнение областей изображения




Процедура Sector (X, Y: Integer; StEngle, EndEngle: Word; XR, YR: Word) рисует сектор эллипса, который будет залит цветом по текущему шаблону.

Процедура PieSlice (X, Y: Integer; StEngle, EndEngle, Radius: Word) рисует сектор эллипса, который будет залит текущим узором.

Процедура FillEllipse (X, Y: Integer; XR, YR: Word) рисует контур эллипса текущим цветом и заполняет ограниченную контуром область экрана текущим узором.

Процедура FloodFill (X, Y: Integer; Border: Word) заполняет заданным с помощью SetFillStyle стилем область, расположенную либо внутри замкнутого контура, либо вне его. (X, Y)-координаты точки внутри или вне замкнутого контура, Border-цвет контура.

Работа с текстом

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

Процедура OutText (TextString: String) выводит на экран строку текста начиная с текущего положения курсора

Процедура OutTextXY (X, Y: Integer;Text: String) выводит на экран строку текста, начиная с точки с координатами (X, Y).

Для вывода числовых данных нужно преобразовать число Number в строку Text с помощью процедуры STR(Number, Text).

В комплект поставки пакета Турбо Паскаль включается набор штриховых шрифтов. Файлы этих шрифтов имеют расширение.CHR. В штриховых шрифтах при построении символа используется не матричный, а векторный способ, что позволяет манипулировать шрифтами без ухудшения качества изображения. Стандартный набор включает четыре шрифта, а, кроме того, доступен системный матричный шрифт 8х8 для графических режимов. Для обозначения шрифтов используются зарезервированные константы

 

DefaultFont   Матричный шрифт 8х8 (по умолчанию)
TriplexFont   Полужирный шрифт
SmallFont   Тонкий шрифт
SansSerifFont   Рубленый шрифт
GothicFont   Готический шрифт

По умолчанию установлен матричный шрифт 8х8. Для установки шрифта используется процедура

SetTextStyle (Font: Word; Direction: Word; CharSize: Word)
где Font задает шрифт,

Direction- ориентацию и направление вывода символов: если значение Direction равно 1, то каждый символ будет повернут на 90° в направлении против часовой стрелки и отображение будет производиться снизу вверх; при значении Direction равном 1 отображение текста будет производиться по горизонтали слева направо.

CharSize- размер отображаемых символов.

При выводе текстовых строк на экран можно задавать расположение следующей отображаемой строки относительно текущего положения указателя с помощью процедуры
SetTextJustify (Horiz, Vert: Word)

Размещение строк и символов на экране задается с помощью параметров Horiz и Vert, которые могут иметь следующие значения:

Horiz Значение Назначение
LeftText   Объявить текущую позицию указателя левой границей строки
CenterText   Центрировать строку относительно текущей позиции указателя
RightText   Объявить текущую позицию указателя правой границей строки
Vert Значение Назначение
BottomText   Размещать символы ниже позиции указателя
CenterText   Центрировать символы по вертикали относительно текущей позиции указателя
TopText   Размещать символы выше позиции указателя

Образцы решения задач

  1. Написать программу, которая построит график функции y=x+3

program gr;

uses Graph;

const n=100;

var

d,r,i,y:integer;

begin

d:=Detect;

initgraph(d,r,'');

setbkcolor(black);

setcolor(green);

line(getmaxx div 2,0,getmaxx div 2,getmaxy);

line(0,getmaxy div 2, getmaxx,getmaxy div 2);

 

for i:=1 to 1000 do begin

y:=-round((i+3)*0.5)+320;

putPixel(i,y,white); end;

 

readln;

closegraph;

end.

  1. Изобразить летающую тарелку.

uses crt, graph;

const r=20;

pause=50;

var d,m,e,xm,ym,lx,ly,rx,ry,i,size,dx,dy: integer;

x,y,width,height:integer;

saucer:pointer;

label Loop;

begin

d:=detect;

InitGraph(d,m,'c:\tp7\bgi');

x:=r*5; y:=r*2;

xm:=GetMaxX div 8;

ym:=GetMaxY div 8;

SetFillStyle(0,Red);

Ellipse(x,y,0,360,r,r div 3+2);

Ellipse(x,y-4,190,357,r,r div 3);

Line(x+7,y-6,x+10,y-12);

Line(x-7,y-6,x-10,y-12);

Circle(x+10,y-12,2);

Circle(x-10,y-12,2);

FloodFill(x+1,y+4,White);

lx:=x-r-1;

ly:=y-14;

rx:=x+r+1;

ry:=y+r div 3+3;

Width:=rx-lx+1;

Height:=ry-lx+1;

Size:=ImageSize(lx,ly,rx,ry);

GetMem(Saucer,Size);

GetImage(lx,ly,rx,ry,Saucer^);

PutImage(lx,ly,Saucer^,XorPut); {очистка изображения тарелки}

Rectangle(xm,ym,7*xm,7*ym);

SetViewPort(xm+1,ym+1,7*xm+1,7*ym-1,ClipOn);

xm:=6*xm;

ym:=6*ym;

for i:= 1 to 200 do

PutPixel(Random(xm),Random(ym),White);

x:=xm div 2;

y:=ym div 2;

dx:=10;

dy:=10;

Repeat

PutImage(x,y,Saucer^,XorPut);

Delay(pause);

PutImage(x,y,Saucer^,XorPut);

loop:x:=x+dx;

y:=y+dy;

if (x<0)or(x+width+1>xm)or(y<0)or(y+Height+1>ym)

then

begin

x:=x-dx;

y:=y-dy;

dx:=GetMaxX div 10-Random(GetMaxX div 5);

dy:=GetMaxY div 30-Random(GetMaxY div 15);

goto loop

end;

Until KeyPressed;

CloseGraph;

end.

7 Контрольные вопросы

1. Как называется, и как подключается библиотека графических процедур и функций?2. Как инициализируется графический режим?3. Как выключается графический режим?4. Как изменяются параметры линий рисования?5. Опишите процедуру рисования линий.6. Опишите процедуры рисования окружности.7. Опишите процедуры рисования дуги окружности и дуги эллипса.8. Опишите процедуру рисования контура прямоугольника.9. Опишите процедуры изменения текущего цвета рисования и текущего цвета фона.10. Как изменить (установить) цвет точки экрана.

 


приложение А

Варианты заданий для выполнения

 

Построить график указанной функции:

1. Локон Аньези: (x22)y-a3=0

2. Кривая, заданная параметрически: x=t2, y=2/3 t(3-t2)

3. Кривая, заданная параметрически: x=4t2, y=3 t(t2+1)

4. Кривая, заданная параметрически: x=t4, y= t2-t5

5. Кардиоида: (x2+y2)(x2+y2-2ax)-a2y2=0. Воспользуйтесь параметрическим представлением: x= a cos t(1+cos t), y= a sin t(1+ cos t), 0≤ t ≤2p.

6. Улитка Паскаля: (x2-y2-ax)2 - L2 (x2+y2)=0. Воспользуйтесь параметрическим представлением: x=a cos2t +L cos t, y= a cos t sin t + L sin t, 0≤t<2p

7. Полукубическая парабола: a2x3-y2=0. Воспользуйтесь параметрическим представлением: x=t2, y= at3.

8. Декартов лист: x3 + y3 - 3axy=0, a>0. Воспользуйтесь параметрическим представлением: , , 1<|t|<∞.

9. Циссоида: x3+(x-a)y2=0, a>0. Воспользуйтесь параметрическим представлением: , , -∞ < t < +∞.

10. Строфоида: (x+a)x2+(x-a)y2=0, a>0. Воспользуйтесь параметрическим представлением: , , -∞ < t < +∞.

11. Составить таблицу значений функции в два столбика на экране и ее график.

Астроида: (x2+y2-r2)3+27r2x2y2=0. Воспользуйтесь параметрическим представлением:

Y=r cos3(t/4)

Y=r sin3 (t/4), t Î[0, 2p]

12. Y=(x2-4x+3)2

13. Y=|x2-4x+1|

14. . Arshx – ареасинус.

15.

16. y=x(x-3)(x+1)

17. y=x2(x-2)(x+1)

18.

19. y=(x-1)2(x+1)4(x-2)3

20. y=x tg x

 


Приложение Б

1. Нарисовать движущуюся ракету при взлете

  1. Изобразить солнце с мерцающими лучами
  2. Нарисовать одуванчик с разлетающимися «пушинками»
  3. Нарисовать забор с падающей первой доской
  4. Изобразить вишенку, которая меняет мимику (улыбка-грусть)
  5. Нарисовать домик, чтобы при нажатии на «А» свет в окне загорался, а потом гаснет при нажатии «В»
  6. Нарисовать снеговика с моргающими глазками
  7. Изобразить целый арбуз, из которого выпадает кусочек
  8. Изобразить летящего комара
  9. Нарисовать картинку: «Робот с двигающимися руками»
  10. Изобразить домик, у которого дверь открывается, если нажать клавишу «enter» и закрывается, если нажать пробел
  11. Нарисовать картинку: «Движущийся автомобиль»
  12. Нарисовать разноцветную ромашку, с меняющимся цветом лепестков
  13. Изобразить смену дня и ночи
  14. Нарисуйте разноцветную бабочку, постоянно меняющую цвета
  15. Изобразить кисть смородины с отпадающими ягодками
  16. Изобразить убывающую луну
  17. Преобразовать белый гриб в мухомор
  18. Изобразить компьютер, на дисплее которого появляется и исчезает надпись «Привет»
  19. Изобразить растущую луну


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: