Сложные рисунки в паскале

лабораторные работы и задачи по программированию и информатике, егэ по информатике

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

Для работы с графикой в 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).
  • После чего можно использовать процедуры для рисования геометрических фигур.

    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.

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

    SetWindowSize(ширина, высота)

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

    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.

    uses GraphABC; begin Circle(500,200,100); FloodFill(500,200,clred); end.

    uses GraphABC; Begin SetPenWidth(10); Arc(300,250,150,45,135); end.

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

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

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

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

    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.

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

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

    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.

    Что ты хочешь узнать?

    Ответ

    var
    x, y: integer;
    s: string;
    b: boolean;

    Читайте также  Работа таймера 6 букв

    begin
    Graphabc.Coordinate.Origin := GraphABC.Window.Center();
    Coordinate.SetMathematic();
    Coordinate.SetScale(10, 10);
    s := ‘(-5; 4), (-7; 4), (-9; 6), (-11; 6), (-12; 5), (-14; 5), (-12; 4), (-14; 3), (-12; 3), (-11; 2), (-10; 2), (-9; 1), (-9; 0), (-8; -2), (0; -3), (3; -2), (19; -2), (4; 0), (19; 4), (4; 2), (2; 3), (6; 9), (10; 11), (3; 11), (1; 10), (-5; 4)’;
    foreach a: string in s.Replace(‘), (‘, ‘),(‘).Split(‘,’) do
    begin
    X := integer.Parse(a.Replace(‘(‘, ”).Replace(‘)’, ”).Replace(‘ ‘, ”).Split(‘;’)[0]);
    Y := integer.Parse(a.Replace(‘(‘, ”).Replace(‘)’, ”).Replace(‘ ‘, ”).Split(‘;’)[1]);
    if (b) then
    GraphABC.LineTo(X, Y)
    else
    begin
    GraphABC.MoveTo(X, Y);
    b := true;
    end;
    end;
    end.

    Сея программа хоть что нарисует, только координаты смени (тут ласточка, а другие в инете найти можно)

    нужно составить рисунки в программе паскаль abc.)

    1) белорусский флаг. (верхняя часть – красная, нижняя часть – зелёная). чтобы части флага были закрашенными цветами указанными ранее.
    2)ёлка. состоит из трёх треугольников. тоже чтобы треугольники были закрашены.
    3)светофор. ну а на нём кружочки) ну и чтобы каждый кружочек был в свой цвет закрашен) (красный, жёлтый, зелёный)

    program SadSmiley;
    uses graphABC;

    function AllFunc():integer;
    begin
    rectangle(175,450,325,475);
    floodfill(200,465,clBlack);
    rectangle(325,425,375,450);
    floodfill(350,435,clBlack);
    rectangle(375,400,400,425);
    floodfill(385,410,clBlack);
    rectangle(400,375,425,400);
    floodfill(410,385,clBlack);
    rectangle(425,325,450,375);
    floodfill(435,350,clBlack);
    rectangle(450,175,475,325);
    floodfill(465,250,clBlack);
    rectangle(425,125,450,175);
    floodfill(435,150,clBlack);
    rectangle(400,100,425,125);
    floodfill(410,110,clBlack);
    rectangle(350,75,400,100);
    floodfill(375,85,clBlack);
    rectangle(300,50,350,75);
    floodfill(325,60,clBlack);
    rectangle(200,25,300,50);
    floodfill(250,35,clBlack);
    rectangle(150,50,200,75);
    floodfill(175,60,clBlack);
    rectangle(100,75,150,100);
    floodfill(125,85,clBlack);
    rectangle(75,100,100,125);
    floodfill(85,110,clBlack);
    rectangle(50,125,75,175);
    floodfill(60,150,clBlack);
    rectangle(25,175,50,325);
    floodfill(35,250,clBlack);
    rectangle(50,325,75,375);
    floodfill(65,350,clBlack);
    rectangle(75,375,100,400);
    floodfill(85,385,clBlack);
    rectangle(100,400,125,425);
    floodfill(115,410,clBlack);
    rectangle(125,425,175,450);
    floodfill(150,435,clBlack);
    rectangle(200,375,300,400);
    floodfill(250,385,clBlack);
    rectangle(125,275,225,300);
    floodfill(175,285,clBlack);
    rectangle(250,275,350,300);
    floodfill(300,285,clBlack);
    rectangle(100,175,125,275);
    floodfill(115,225,clBlack);
    rectangle(350,175,375,275);
    floodfill(365,225,clBlack);
    rectangle(325,150,350,175);
    floodfill(335,160,clBlack);
    rectangle(300,125,325,150);
    floodfill(310,135,clBlack);
    rectangle(125,150,150,175);
    floodfill(135,165,clBlack);
    rectangle(150,125,175,150);
    floodfill(165,135,clBlack);
    Line(175,125,175,100);
    Line(175,100,300,100);
    Line(300,100,300,125);
    Line(300,125,250,125);
    Line(250,125,250,175);
    Line(250,175,300,175);
    Line(300,175,300,250);
    Line(300,250,250,250);
    Line(250,250,250,275);
    Line(250,275,225,275);
    Line(225,275,225,250);
    Line(225,250,175,250);
    Line(175,250,175,175);
    Line(175,175,225,175);
    Line(225,175,225,125);
    Line(225,125,175,125);
    floodfill(200,200,clBlack);
    floodfill(250,350,clYellow);
    end;

    Ссылка на основную публикацию
    Adblock detector