Пятница, 2025-06-20, 2:37 PM
Приветствую Вас Гость | RSS
Главная | Урок 11 | Регистрация | Вход
Меню сайта
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Программирование

    Урок 11 — <<Графика в Паскале>> Примеры

     

    Графика в Паскале строится при помощи подключения модуляГраф, то есть на экране компьютера можно получать не только последовательности  символов, но и разнообразные рисунки, схемы, картинки. В нашем примере - это построить график функции в Паскале. Для этого в Паскаль включаются специальные средства - графические процедуры и операторы, которые находятся в модуле Graph (uses Graph;).

    Цель урока – это познакомиться с возможностями графических операторовпостроение графических изображений в Паскале.

    Следует отметить, что графическое изображение на экране составляется из точек (например, как фотографии в газетах, журналах и др.). Количество точек (пикселей) на экране зависит от разрешающей способности экрана. Каждая точка задается двумя координатами (x, y). Точка с координатами (0,0) находится в левом верхнем углу экрана. Ось Х направлена вправо, а ось У вниз.

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

    1. Переключить монитор в графический режим с помощью оператора InitGraph (Driver, mode, <путь к драйверу>).
    2. Установить разрешающую способность экрана по умолчанию режимом Detect или процедурой SetGraphMode. Режим Detect устанавливает разрешающую способность экрана 640*480 пикселей, т.е. координата  Х может принимать значения от 0 по 639, а У от 0 по 479.
    3. Очистить  и инициализировать графический экран процедурой ClearDevice.
    4. Установить цвет фона  оператором  SetBkColor и цвет изображения  оператором SetColor.
    5. Вывести на экран точки,  отрезки, прямоугольники, дуги, окружности, эллипсы.
    6. Вывести на экран закрашенные фигуры.
    7. Вывести тексты и подписи на экран. Для использования операторов Write и Writeln в графическом режиме необходимо выполнить следующую операцию присваивания : DirectVideo := FALSE;  Или использовать процедуру Outtextxy(x,y,st), которая выводит строку st,  начиная с позиции  x, y.

    Цвета  в операторах  задаются с помощью своих кодов:

    0 – черный;        4 – красный;           8 – темно-серый;      12 – ярко-красный;
    1 – синий;          5 – пурпурный;           9 – ярко-синий;    13 – ярко-пурпурный;
    2 –зеленый;       6 – коричневый;     10 – ярко-зеленый;    14 – желтый;
    3 – бирюзовый;      7 – светло-серый;    11 – ярко-бирюзовый;    15 – белый.

    Цифровое кодирование цвета соответствует последовательности IRGB для 0-3 битов. Бит 3 – бит интенсивности I, бит 2 – бит красного R, бит 1 – бит зеленого G, бит 0 – бит синего B. Например, 11=8+2+1, т.е. биты 3,1,0 – интенсивный сине-зеленый (бирюзовый).

    Основные графические операторы для построения изображений:

    PutPixel (X, Y, цвет) - вывод точки на экран, где X, Y  - координаты точки ;
    Line ( X1, Y1, X2, Y2 ) - проводит линию из точки с координатами (X1, Y1 ) в точку с координатами ( X2, Y2 );
    Rectangle (X1, Y1, X2, Y2 ) - прямоугольник со сторонами, параллельными осям координат;  (X1, Y1) и (X2, Y2)  - координаты, определяющие одну из диагоналей прямоугольника ;
    Bar ( X1, Y1, X2, Y2 ) - закрашенный прямоугольник (без окантовки);
    Circle ( X, Y, радиус ) – на экран выводится окружность с центром в точке  ( X, Y )(тип integer) ;
    Arc (X, Y, начальный угол, конечный угол, радиус) - на  экран  выводится  дуга окружности с центром в точке (X, Y ); углы задаются в градусах; дуга рисуется ПРОТИВ часовой стрелки;
    Ellipse ( X, Y, начальный угол, конечный угол,  горизонтальный радиус, вертикальный радиус) -  на экран выводится эллиптическая дуга с центром в точке с координатами ( X, Y ) (тип integer);
    SetFillStyle (заполнение, цвет) – определение вида и цвета заполнения области;
    FloodFill (x, y, цвет границы) – заливка замкнутой области.

    Пример программы построения  графика функции.

    program graphic; 
    uses graph; 
    var driver, mode, errorcode : integer; xm,ym,i,j : integer; 
    pi,pi300,x1,y1,x2,y2, sc : real; 
    st1,st2,st3 : string; 
    function f(x:real) : real;
    begin
    f:=sin(x)+sin(2*x)+sin(3*x)-1-cos(x)-cos(2*x);{ функция для построения}
    end; {графика} 
    begin 
    st1:='x';st2:='y'; 
    st3:=' Press ENTER'; 
    sc:=50; 
    driver:=9; {egavga} 
    mode:=2; {640х480 пикселей} 
    initgraph(driver,mode,'d:\bp\bgi'); {инициализация графического режима }
    errorcode:=graphresult;
    if errorcode<>grok then {ошибка }
    begin
    writeln('Error init Graph');
    closegraph; 
    halt;
    end;
    xm:=getmaxx div 2;
    ym:=getmaxy div 2;
    { xm=320;ym=240;центр экрана}
    line(xm,20,xm,460);{ось y}
    line(20,ym,620,ym);{ ось x}
    outtextxy(630,ym,st1); {маркировка оси х}
    outtextxy(xm,10,st2); {маркировка оси у}
    pi:=3.1415926; pi300:=pi/300;
    x1:=-pi;
    for i:=0 to 24 do {разметка оси х вертикальными черточками}
    begin
    line(xm+round(80*x1),230,xm+round(80*x1),250);
    x1:=x1+pi300*25;
    end;
    x1:=-pi; {собственно построение графика отрезками прямых}
    while x1<pi do
    begin
    y1:=f(x1);x2:=x1+pi300;
    y2:=f(x2);
    line(xm+round(80*x1), ym-round(sc*y1),
    xm+round(80*x2), ym-round(sc*y2));
    x1:=x2;
    end;
    outtextxy(270,470,st3);
    readln;
    closegraph;
    end.

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

    uCozCopyright MyCorp © 2025