Pascal: Занятие № 4 часть II. Графика в Паскале

На занятии происходит знакомство с логическим типом Boolean в Паскале. Рассматривается алгоритм того, как находится минимальное и максимальное число в Паскале

Графика в Паскале

Для работы с графикой в pascal abc используется модуль GraphABC. Для его подключения используется следующий код:

uses GraphABC;
begin
...
end.

Система координат в Паскале соответствует экранной системе координат и выглядит следующим образом:

Система координат в паскале
Система координат

Управление цветом

Для того, чтобы использовать цвет, необходимо применить этот цвет к инструменту перо:

  • SetPenColor(color) — устанавливает цвет пера, задаваемый параметром color;
  • setBrushColor(color) — устанавливает цвет кисти, задаваемый параметром color;
  • либо для палитры RGB: SetPenColor(rgb(0-255, 0-255, 0-255));
  • или использовать для заливки:

  • FloodFill(x,y,color) — заливает область одного цвета цветом color, начиная с точки (x,y).

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

Цвета в pascal abc:

clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый
clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый
clSilver – серебряный

Точки, отрезки и ломаные

Для отображения точки в паскале используется процедура:

  • SetPixel(x,y,color) — Закрашивает один пиксел с координатами (x,y) цветом color
  • точки в паскале

    uses GraphABC;
    begin
      SetPixel(300,200,clred);
    end.

    Для рисования линии используется:

  • Line(x1,y1,x2,y2) — рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2)
  • паскаль линия

    uses GraphABC;
    begin
      SetPenColor(clgreen);
      line(100,50,500,250);
    end.

    Ломаные можно рисовать с помощью процедур MoveTo (x1, y1) и LineTo (x2, y2).
    Процедуры работают в паре: MoveTo передвигает курсор в определенную точку, а процедура LineTo рисует линию с этой точки до точки, определенной параметром данной процедуры.
    ломаные в паскале

    uses GraphABC;
    begin
    ...
    SetPenColor(clblue);
    MoveTo (x1, y1);
    LineTo (x2, y2);
    LineTo (x3, y3);
    LineTo (x4, y4);
    LineTo (x5, y5);
    end.
    Задание 0: При помощи операторов SetPenColor(), LineTo (x2, y2) и MoveTo (x1, y1) нарисовать квадрат и равносторонний треугольник.

    [Название файла: L4_2task0.pas]

    Для установки размеров графического окна используется процедура

  • SetWindowSize(ширина, высота)
  • или, например:

    SetWindowWidth(600);
    SetWindowHeight(400);

    Рисование фигур

    Прямоугольник в Паскале рисуется:
  • Rectangle(x1,y1,x2,y2) — рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
  • прямоугольник в паскале

    uses GraphABC;
    begin
      Rectangle(50,50,200,200);
    end.
    Фигуры с заливкой:

    Фигуры с заливкой

    uses GraphABC;
    begin
      Rectangle(50,50,200,200);
      FloodFill(100,100,clBlue);
    end.
    Треугольник рисуется процедурами:

    Line(x1,y1,x2,y2);
    LineTo(x,y);

    треугольник в паскале

    uses GraphABC;
    begin
      setpenwidth(20);
      setpencolor(clred);
      moveTo(300,100);
      lineTo(500,300);
      lineto(100,300);
      lineto(300,100);
      floodfill(300,200,clgreen);
    end.
    Окружность можно нарисовать с помощью процедуры:
  • Circle(x,y,r) — рисует окружность с центром в точке (x,y) и радиусом r.
  • круг в паскале

    uses GraphABC;
    begin
       Circle(500,200,100);
       FloodFill(500,200,clred);
    end.
    Дуга окружности
  • Arc(x,y,r,a1,a2) — Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
  • Дуга окружности

    1
    2
    3
    4
    5
    
    uses GraphABC;
    Begin
    SetPenWidth(10);
    Arc(300,250,150,45,135);
    end.
    Задание 1: «Лягушка»
    задание по теме графика в паскале

    [Название файла: L4_2task1.pas]

    Задание 2: «Корона»
    задание по теме графика в pascal

    [Название файла: L4_2task2.pas]

    Функция random для использования окраски

  • SetPenColor(rgb(random(256), random(256), random(256))); — выбирает случайное число из 256-цветной палитры для красного, зеленого и синего.
  • Задание 3: Нарисовать горизонтальный ряд окружностей радиусом 10 на расстоянии 100 от верхнего края экрана и с такими горизонтальными координатами 50, 80, 110, 140, … , 290.

    * раскрасить круги случайным цветом

    [Название файла: L4_2task3.pas]

    Задание 4: «Круги на воде».
    Нарисуйте пару десятков концентрических окружностей, то есть окружностей разного радиуса, но имеющих общий центр.

    [Название файла: L4_2task4.pas]

    Задание 5:
    Воспроизвести изображение при помощи программы:
    графика паскаль abc.net

    [Название файла: L4_2task5.pas]

    Штриховка

    Нарисовать штриховку на Паскале можно, используя процедуры рисования прямоугольника и линии:
    алгоритм штриховки на паскале

    Программа будет выглядеть следующим образом:

    1_1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    uses graphABC;
    var i, x1, x2, y1, y2, N: integer;
       h, x: real;
    begin   
      x1 := 100; y1 := 100;
      x2 := 300; y2 := 200;
      N := 10;
      Rectangle (x1, y1, x2, y2);
      h := (x2 - x1) / (N + 1);
      x := x1 + h;
      for i:=1 to N do begin
        Line(round(x), y1, round(x), y2);
        x := x + h;
      end;
    end.
    Задание 6:
    Нарисуйте шахматную доску.

    [Название файла: L4_2task6.pas]

    Анимация в Паскале

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

    Пример: Воспроизвести движение круга по горизонтали.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    uses GraphABC;
    var x:integer;
    begin
      x:=40;
    	repeat 
    		SetPenColor(clWhite);
    		Circle(x,100,10);	{Рисуем белую окружность}
    		SetPenColor(clBlack);
    		Circle(x,100,10);	{Рисуем черную окружность}
    		x:=x+1				{Перемещаемся немного направо}
    	until x>600;
    end.
    Задание 7: Выполнить анимацию движения квадрата по следующей траектории:

    [Название файла: L4_2task7.pas]

    3 комментария для “Pascal: Занятие № 4 часть II. Графика в Паскале”

    Обсуждение закрыто.