Мегаобучалка Главная | О нас | Обратная связь


Процедура SetLineStyle ( Туре , Pattern, Thick);



2020-02-04 190 Обсуждений (0)
Процедура SetLineStyle ( Туре , Pattern, Thick); 0.00 из 5.00 0 оценок




Где Туре – тип линии. Pattern – образец линии. Thick – толщина линии.

Тип линии:

0 – сплошная,

1 – точечная,

2 – штрихпунктирная,

3 – . . . . . . . .

4 – узор линии определяет пользователь параметром pattern.

Thick=l – толщина линии в 1 пиксел.

Thick=2 – толщина линии в 3 пиксела.

Процедура Rectangle (Х1, Y1, Х2, Y2); вычерчивает прямоугольник с использованием текущего цвета и текущего стиля линий.

Процедура Draw P oly (N, Р); вычерчивает произвольную ломаную линию. N - количество точек излома, включая крайние; Р - переменная типа PointType, которая в Graph имеет вид:

Type

PointType=record

X, Y: Word

end;

При вычерчивании используются текущий цвет и текущий стиль линий. Процедура Circle (Х, Y, R); вычерчивает окружность с центром X, Y и радиусом R.

Процедура Arc (Х, Y, Beg А, End А, R); вычерчивает дугу окружности Beg А и End А, соответственно, начальный и конечный углы дуги.

Процедура Ellipse (Х, Y, Beg А, End А, RX, RY); вычерчивает дугу эллипса с центром X, Y; Beg А, End А – начальный и конечный угол, RX и RY – горизонтальный и вертикальный радиусы.

Процедура Bar (Х1, Y1, Х2, Y2); заполняет прямоугольную область экрана образцом узора и текущим цветом, которые устанавливаются процедурой SetF il lStyle.

Процедура Ва r 3 D (Х1, Y1, Х2, Y2, Depth, Тор); вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Depth – глубина третьего измерения, Top= t rue – верхняя грань вычерчивается, false - нет.

Процедура FillPoly (n, Coords); обводит линией и закрашивает замкнутый многоугольник; n – количество вершин, Coords – переменная типа Poin t Type, содержащая координаты вершин (см. DrawPoly).

Процедура F il lEllipse (Х, Y, Rx, Ry); обводит линией и заполняет эллипс.

Процедура Sector (Х, Y, Beg А, End А, Rx, Ry); вычерчивает и заполняет эллипсный сектор.

Процедура PieSlice (Х, Y, Beg А, End А, R); вычерчивает и заполняет сектор окружности.

Процедура SetColor (Color); устанавливает текущий цвет для выводимых линий и символов.

Процедура SetbkColor (Color); устанавливает цвет фона окна.

Процедура SetF ill Style (Fill, Color); устанавливает стиль Fill и цвет заполнения Color.

Значения Fill:

 0 – заполнение фоном (узор отсутствует);

 1 – сплошное заполнение;

 2 – заполнение – – – – –;

 3 – – « – /////// ;

 4 – – « – утолщенными ///////;

 5 – – « – утолщенными \\\\\\ ;

 6 – – « – \\\\\\ ;

 7 – – « – + + + + + +;

 8 – – « – ******;

 9 – – « – прямоугольной клеточкой;

 10 –  – « – редкими точками ;

 11 –  – « – частыми точками ;

 12 –  – « – узор определяется пользователем.

Процедура FloodPill (Х, Y, Color); заполняет произвольную замкнутую линию (точки соединения должны совпадать, например, концы линий не могут пересекаться) текущим стилем и текущим цветом. X, Y – координаты точки внутри фигуры, Color — цвет ограничений линии. Если линии разомкнуты или пересекаются и концы «торчат», то цвет «разольется» по всему окну.

Функция ImageSize (X1, Y1, X2, Y2); возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения (например, окна с рисунком).

Процедура GetImage (X1, Y1, X2, Y2, Buf); помещает в память копию прямоугольного фрагмента изображения. Buf — переменная или участки кучи, куда будет помещена копия видеопамяти с фрагментом изображения. Размер Buf должен быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами X1...Y2.

Процедура PutImage (X, Y, Buf, Mode); выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой GetImage.

X, Y — координаты левого угла того места на экране, куда будет скопирован фрагмент изображения. Buf — переменная, или участок кучи, откуда берется фрагмент изображения. Mode — способ копирования.

 

12.3. Примеры программ

 

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

Программа Prim 54 демонстрирует вывод различных простых объектов-окружностей, дуг, эллипсов, прямоугольников, параллелепипедов.

  Program Prim54;Uses Graph;var grDriver,grMode,errCode,Radius,i,Width,y0,y1,y2,x1,x2:integer;Begin grDriver:=detect; { определение номера драйвера }

InitGraph ( grDriver , grMode ,'');

                      { инициализация графического режима }

    errCode:=GraphResult;

if errCode=grOK then

begin        { графический режим открыт, можно работать }

   for radius :=1 to 5 do

begin       { рисуем окружности с радиусами 10,20..50,

                          с центром x=200, y=70 точек растра }

      Circle (200,70, Radius *10); readln ; end ;

{ Cleardevice;} { если бы этот оператор не был в

                          комментарных скобках, т.е. не заблокирован, то

                         сейчас окружности были бы стерты с экрана }

Ellipse(200,200,0,360,30,50); { рисуем дугу эллипса с центром               200,200, начальный угол=0, конечный – 360 (замкнутый,

           эллипс радиусами 30,50 }

   readln;

Ellipse(300,200,0,180,50,30);   {полэллипса }

   readln;

  for Radius:=1 to 5 do

Arc(300,100,0,90,radius*10); { дуги с центром 300,100, от

                     0 до 90 градусов, радиусами 10,20..50}

   readln;

   Width:=10;

Bar(30,20,50,100); {прямоугольник с координатами 30,20 –

          верхний левый угол и 50,100 – нижний правый угол}

   for i:=1 to 5 do

Bar(10+i*Width,300+i*10,20+i*Width,400);

{пять прямоугольников: первый 20,310.30,400,

                     второй 30,320,40,400 и т.д. }

   readln;

Bar3D(210,300,250,360,10,TopOn); {параллелепипед с крышкой}

   readln;

   x1:=410; y1:=300; x2:=450; y2:=360;

Bar3D(x1,y1,x2,y2,10,TopOff); { параллелепипед без крышки }

   readln;

   CloseGraph; { закрыть Graph}

   end

else Halt(1); { режим Graph не удалось открыть . }

End.

Prim 55 рисует в динамике случайно расположенные цветные линии в окне до тех пор, пока не будет нажата клавиша Enter. Затем машина выводит последним случайным цветом главную диагональ окна, после Enter – случайные лучи и после Enter – прямоугольник.

Program Prim55;

Uses CRT,Graph;

var GrDriver,grMode,errCode:integer;

begin grDriver:=Detect;

   InitGraph(grDriver,grMode,' ');

   errCode:=GraphResult;

if errCode=grOK then

begin Randomize; {запустить генератор случайных чисел}

repeat {рисуются цветные линии в квадрате 500 x 500,

              пока не будет нажата любая клавиша, координаты

              линий случайны, цвета линий случайны}

SetColor(Random(GetMaxColor)+1);

Line(Random(500),Random(500),Random(500),Random(500));

Delay(1000);      {каждая линия рисуется с задержкой}

until KeyPressed;

Cleardevice;

MoveTo(1,2);                { перевести курсор }

LineRel(500,500); {провести линию из предыдущей точки в 500,500

                       последним цветом}

readln;    readln;

repeat

LineTo(random(500),random(500)); {провести линию в случайную точку}

Delay(6000);

until KeyPressed; readln;

ClearDevice;

Rectangle(29,29,GetMaxX-29,GetMaxY-29); { прямоугольник }

   readln;

CloseGraph; end

else Halt(1); end.

Prim56 рисует эллипсы и круги, закрашенные красным цветом.

Program Prim56;

Uses CRT, Graph;

 Var grDriver,grMode,errCode:integer;

Begin grDriver:=Detect;

  InitGraph(grDriver,grMode, ' ');

  errCode:=Graphresult;

if errCode=grOK then

Begin SetBkColor(blue);

  SetFillStyle(1,4);

  FillEllipse(220,150,50,50);

  FillEllipse(420,150,50,50);

  FillEllipse(320,230,50,130);

  FillEllipse(370,405,50,30);

  FillEllipse(275,410,50,30);

  readln; end

  else Halt(1); end.

Prim56 рисует обезьяну с тазиком.

  Program Prim57;

Uses Graph;

Var i,grDriver,grMode,TrrCode,errCode:integer; x,y:word;

xm,ym,rc,xc,yc,x1,y1,x2,y2,r:word;

k:arccoordsType; kr:array[1..20] of PointType;

Begin grDriver:=detect;

      InitGraph(grDriver,grMode,' ' );

      errCode:=GraphResult;

    if errCode=grOK then

begin

   x:=150; y:=150;

SetBkColor(white);

       { уши }

y1:=y-30; x1:=x-30; x2:=x+40; r:=15;

SetColor(lightred);

SetFillStyle(solidfill,brown);

pieslice(x1,y1,0,360,r);

pieslice(x2,y1,0,360,r);

r:=r-3;

SetFillStyle(solidfill,lightred);

pieslice(x1,y1,0,360,r);

pieslice(x2,y1,0,360,r);

       {голова}

r:=(x2-x1) div 2-3;

x1:=x1+r+2;

y1:=y1+2;

xc:=x1;

yc:=y1;

rc:=r;

setColor(brown);

SetFillStyle(solidfill,brown);

pieslice(x1,y1,0,360,r);

         { майка }

setColor(brown);

SetFillStyle(solidfill,yellow);

y2:=y1+r-3;

x1:=x1-r div 2+2;

ym:=y2;

line(x1-5,y2-5,x1-27,y2+68);

x2:=x1+r+16;

xm:=x2;

line(x2-15,y2-5,x2+27,y2+68);

line(x1-27,y2+68,x2+27,y2+68);

putpixel(x2-22,y2+25,blue);

floodfill(x2-22,y2+25,brown);

        { пояс }

setcolor(green);

setfillstyle(solidfill,green);

bar(112,215,214,225);

        { штаны }

setcolor(blue);

setfillstyle(solidfill,blue);

kr[1].x:=113; kr[1].y:=223;

kr[2].x:=113; kr[2].y:=270;

kr[3].x:=165; kr[3].y:=270;

kr[4].x:=170; kr[4].y:=260;

kr[5].x:=180; kr[5].y:=270;

kr[6].x:=225; kr[6].y:=270;

kr[7].x:=212; kr[7].y:=223;

kr[8].x:=113; kr[8].y:=223;

fillpoly(8,kr);

       { левая нога }

setcolor(brown);

setfillstyle(solidfill,brown);

kr[1].x:=135; kr[1].y:=270;

kr[2].x:=145; kr[2].y:=320;

kr[3].x:=123; kr[3].y:=350;

kr[4].x:=145; kr[4].y:=358;

kr[5].x:=145; kr[5].y:=350;

kr[6].x:=162; kr[6].y:=320;

kr[7].x:=145; kr[7].y:=270;

kr[8].x:=135; kr[8].y:=270;

fillpoly(8,kr);

         { правая нога }

kr[1].x:=195; kr[1].y:=270;

kr[2].x:=205; kr[2].y:=320;

kr[3].x:=183; kr[3].y:=350;

kr[4].x:=205; kr[4].y:=358;

kr[5].x:=205; kr[5].y:=350;

kr[6].x:=222; kr[6].y:=320;

kr[7].x:=205; kr[7].y:=270;

kr[8].x:=195; kr[8].y:=270;

fillpoly(8,kr);

          { башмаки }

setfillstyle(solidfill,red);

pieslice(160,360,0,360,10);

pieslice(200,370,10,160,20);

pieslice(215,360,0,360,10);

pieslice(142,370,10,160,20);

setfillstyle(solidfill,white);

fillellipse(145,115,5,8);

fillellipse(163,115,5,8);

setfillstyle(solidfill,blue);

pieslice(147,115,0,360,3);

pieslice(165,115,0,360,3);

setcolor(yellow);

arc(154,160,30,145,30);

setcolor(red);

setfillstyle(solidfill,lightmagenta);

fillellipse(154,146,5,8);

         { бабочка }

kr[1].x:=140; kr[1].y:=153;

kr[2].x:=135; kr[2].y:=163;

kr[3].x:=155; kr[3].y:=158;

kr[4].x:=175; kr[4].y:=163;

kr[5].x:=170; kr[5].y:=153;

kr[6].x:=155; kr[6].y:=158;

kr[7].x:=140; kr[7].y:=153;

fillpoly(7,kr);

          { тазик }

setfillstyle(solidfill,blue);

kr[1].x:=243; kr[1].y:=225;

kr[2].x:=255; kr[2].y:=280;

kr[3].x:=325; kr[3].y:=280;

kr[4].x:=335; kr[4].y:=225;

kr[5].x:=255; kr[5].y:=225;

fillpoly(5,kr);

sector(290,230,0,360,50,12);

setfillstyle(solidfill,lightcyan);

fillellipse(290,230,40,10);

       { руки }

setfillstyle(solidfill,brown);

kr[1].x:=184; kr[1].y:=164;

kr[2].x:=295; kr[2].y:=225;

kr[3].x:=300; kr[3].y:=215;

kr[4].x:=175; kr[4].y:=150;

kr[5].x:=180; kr[5].y:=160;

fillpoly(5,kr);

pieslice(295,224,0,170,12);

pieslice(265,244,0,360,10);

kr[1].x:=136; kr[1].y:=184;

kr[2].x:=265; kr[2].y:=255;

kr[3].x:=270; kr[3].y:=245;

kr[4].x:=135; kr[4].y:=170;

kr[5].x:=136; kr[5].y:=184;

fillpoly(5,kr);

end else halt(1);

Readln; end.     

Prim58 демонстрирует возможности мультипликации: по фоновому рисунку – дом, луна, висящий "базовый" НЛО; мечется с переменной скоростью малый НЛО и издает звуки случайными частотами.

     Program Prim58;

Uses CRT,Graph;

Label loop;

Const r=30; p=600; pr=1000; {константы, определяющие скорость}

                           {рисования и перемещения объектов}

Var d , m , e , xm , ym , x , y , lx , ly , rx , ry , size , i , dx , dy ,

  width,height,grDriver,grMode,errCode,a,b,c,

  f,s,j:integer;

  saucer:pointer;

Begin grDriver:=Detect;

     InitGraph(grDriver,grMode,'');

    errCode:=GraphResult;

    if errCode=grOK then

Begin x:=r*3; y:=r*2; xm:=GetMaxX div 2; ym:=GetMaxY div 2;

{ тарелка }

SetBkColor(blue);

SetFillStyle(solidfill,red);

    Ellipse(x,y,0,360,r+40,r div 10);

    Ellipse(x,y-4,0,360,r-1,r);

    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 6;

    Width:=rx-lx+1;

    Height:=ry-ly+1;

    Size:=Imagesize(lx-9,ly,rx+3,ry+10);

    GetMem(Saucer,size);

    GetiMage(lx-9,ly,rx+10,ry+3,saucer^);

{ создаем звездное небо }

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

    SetViewPort(xm+1,ym+1,3*xm-1,3*ym-1,Clipon);

    xm:=2*xm;

    ym:=2*ym;

    for i:=1 to 200 do

PutPixel(random(xm),random(ym),white);

{ дом }

SetFillStyle(solidfill,DarkGray);

bar(320,240,640,480); Delay(p*10); { дом }

bar(370,220,600,240); Delay(p*10); { чердак }

Line(320,240,640,240); Delay(p*10); { крыша }

Line(370,240,370,220); Delay(p*10); {левая стена чердака}

Line(600,220,600,240); Delay(p*10); {правая стена чердака}

Line(370,220,600,220); Delay(p*10); { крыша чердака }

Line(430,220,430,180); Delay(p*10); { мачта антенны }

Line(430,180,410,170); Delay(p*10); { верхний ус антенны }

Line(430,180,410,190); Delay(p*10); { нижний ус антенны }

Line(430,180,410,180); Delay(p*10); { средний ус антенны }

bar(0,460,640,480); Delay(p*10); { земля }

Line(0,460,640,460); Delay(p*10);

SetFillStyle(solidfill,Yellow);

b:=270;                         { окна }

for i:=1 to 4 do

begin a:=350; f:=b+20; c:=a+15; Delay(p*5);

for j:=1 to 8 do

begin

bar(a,b,c,f);      Delay(p*5);

SetColor(DarkGray);

Line(a,b+8,c,f-12); Delay(p*5);

Line(a+5,b+8,a+5,b+20); Delay(p*5);

a:=a+35; c:=c+35; end;

b:=b+50; end;      Delay(p*10);

Pieslice(500,80,300,100,20);      { месяц }

SetColor(green);   Delay(p*10);

Line(150,460,150,400); Delay(p*10); { дерево }

Circle(170,365,25); Delay(p*10);

Circle(165,375,25); Delay(p*10);

Circle(150,375,25); Delay(p*10);

Circle(135,365,25); Delay(p*10);

Circle(155,345,25); Delay(p*10);

{задаем начальное положение нло и направление движения}

    x:=xm div 2;

    y:=ym div 2;

    dx:=100;

    dy:=100;

{ основной цикл }

   Repeat

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

    Sound(Random(2*2000));

    Delay(pr*2); NoSound;

    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;

if ReadKey=#0 then x:=ord(ReadKey);

end else CloseGraph ;

End .


Список использованной и рекомендуемой литературы:

 

1. А.Н. Воловачев, В.С. Крисевич. Программирование на языке Паскаль для персональных ЭВМ ЕС. – Минск: "Высшая школа", 1989.

2. В.Я. Сердюченко. Розробка алгоритмів та програмування мовою TURBO PASCAL. – Харьков: "Паритет", 1995.

3. В.В. Фаронов. TURBO PASCAL 7.0 /Практика программирования/ – "Нолидж", 1997.

4. В.В. Фаронов. TURBO PASCAL 7.0 /Начальный курс/ – "Нолидж", 1997.

 


ОГЛАВЛЕНИЕ

 

1. Предварительные сведения...................................................... 4

1.1. Алфавит................................................................................................... 4

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

2. Простейшие программы............................................................. 5

2.1. Оператор присваивания......................................................................... 5

2.2. комментарии........................................................................................... 7

2.3. Программа............................................................................................... 7

2.4. Простейший ввод-вывод........................................................................ 8

2.5. Арифметические выражения.................................................................. 9

2.6. Описания переменных......................................................................... 12

2.7. Раздел описания типов........................................................................ 14

3. Разветвляющиеся программы............................................. 16

3.1. Общие положения................................................................................. 16

3.2. Оператор goto, раздел описания меток............................................. 17

3.3. Оператор if............................................................................................. 19

3.4. Оператор case (оператор выбора)........................................................ 25

4. Циклические программы......................................................... 27

4.1. Оператор for.......................................................................................... 27

4.2. Оператор repeat. Общий вид................................................................ 32

4.3. Оператор While..................................................................................... 33

4.4. Вложенные циклы................................................................................. 34

5. Ввод – вывод...................................................................................... 37

5.1. Общие положения................................................................................. 37

5. 2. Ввод....................................................................................................... 38

5. 3. Вывод..................................................................................................... 39

5. 4. Некоторые возможности ввода-вывода........................................... 39

6. Массивы.............................................................................................. 41

6. 1. Описание массивов............................................................................ 41

7. Подпрограммы................................................................................ 49

7.1. Общие положения................................................................................. 49

7.2. Подпрограммы-функции, определенные пользователем................. 51

7.3. Подпрограммы-процедуры................................................................... 54

7.4. Локальные и глобальные описания объектов.................................. 58

8. Строковые данные....................................................................... 59

8.1. Общие замечания.................................................................................. 59

8.2. Строковые выражения.......................................................................... 60

8.3. Стандартные процедуры и функции для обработки строк................ 61

8.3.1. Процедуры обработки строк.............................................................. 61

8.3.2. Функции обработки строк................................................................. 62

9. Записи................................................................................................... 63

9.1. Комплексные данные........................................................................... 68

9.2. Запись с вариантами............................................................................ 70

10. Файлы.................................................................................................. 71

10.1. Общие замечания................................................................................ 71

10.2. Стандартные процедуры и функции для работы с файлами.......... 72

10. 3. Стандартные файлы........................................................................... 73

10.4. Файлы последовательного доступа, созданные пользователем. 74

10.5. Файлы произвольного доступа........................................................ 80

10.6. Текстовые файлы................................................................................ 83

11. Использование библиотеки CRT....................................... 85

11.1. Программирование клавиатуры....................................................... 85

11.2. Текстовый вывод на экран................................................................ 88

11.3. Программирование звукового генератора...................................... 96

12. Графика в Паскале...................................................................... 99

12.1. Инициализация графического режима............................................ 99

12.2. Процедуры и функции библиотеки Graph........................................ 99

12.3. Примеры программ............................................................................ 102

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ............................................109



2020-02-04 190 Обсуждений (0)
Процедура SetLineStyle ( Туре , Pattern, Thick); 0.00 из 5.00 0 оценок









Обсуждение в статье: Процедура SetLineStyle ( Туре , Pattern, Thick);

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (190)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)