Графические возможности TurboPascal 7.0 — страница 12

  • Просмотров 6217
  • Скачиваний 578
  • Размер файла 3666
    Кб

горизонтальную, второе - вертикальную координаты. Для них можно использовать следующий определенный в модуле тип: type PointType = record x,y:word end; При вычерчивании используется текущий цвет и текущий стиль линий. Вот как, например, можно с помощью этой процедуры вывести на экран график синуса: Uses Graph; Const N = 100; (Количество точек графика} Var d, r, e: Integer; m:array [0..N+1] of PointType; k : Word; begin {Инициируем графику} d := Detect; InitGraph(d, r, ''); e := GraphResult; if e <> grOk then,

WriteLn(GraphErrorMsg(e)) else begin {Вычисляем координаты графика} for k := 0 to N do with m[k] do begin x := trunc(k*GetMaxX/N); у := trunc(GetMaxY*(-sin(2*Pi*k/N)+l)/2) end; {Замыкаем график прямой линией} m[succ(N)].x := m[0] .x; m[succ(n)].y := m[0] .у; DrawPoly(N + 2, m); ReadLn; CloseGraph end end. В этом примере для проведения горизонтальной прямой используется «замыкание» ломаной - первая и последняя координаты ее точек излома совпадают. Замечу, что хотя количество точек излома N - выражение типа Word, на самом деле внутри

процедуры на этот параметр накладываются ограничения, связанные с конеч­ным размером используемой буферной памяти. Вы можете убедиться в этом с помо­щью, например, изменения N в предыдущем примере: при N==678 график перестанет выводиться на экран, а функция GraphResult будет возвращать значение -6 (не хватает памяти для просмотра областей). Таким образом, для этой программы пороговое зна­чение количества точек излома составляет 679.

6. Дуги, окружности, эллипсы Процедура Circle. Вычерчивает окружность. Заголовок: Procedure Circle(X,Y: Integer; R: Word); Здесь X, Y- координаты центра; R - радиус в пикселях. Окружность выводится текущим цветом. Толщина линии устанавливается текущим стилем, вид линии всегда SolidLn (сплошная). Процедура вычерчивает правильную окружность с учетом изменения линейного размера радиуса в зависимости от его направления относительно сторон графического

экрана, т.е. с учетом коэффициента GetAspectRatio. В связи с этим параметр R определяет количество пикселей в горизон­тальном направлении. В следующем примере в центре экрана создается окно, постепенно заполняющееся случайными окружностями. Для выхода из программы нажмите на любую клавишу. Uses Graph, CRT; Var d,r,e,x,y: Integer; begin {Инициируем графику} d := Detect; InitGraph(d, r, ' ') ; e := GraphResult; if e <> grOK then WriteLn(GraphErrorMsg(e)) else begin {Создаем окно в центре экрана} х :=

GetMaxX div 4; у := GetMaxY div 4; Rectangle(x,у,3*х,3*у); SetViewPort(x+l,y+l,3*x-l,3*y-l,ClipOn); {Цикл вывода случайных окружностей} repeat SetColor(succ(Random(white))); {Случайный цвет} SetLineStyle(0,0,2*Random(2)+1); {и стиль линии} x := Random(GetMaxX); {Случайное положение} у := Random(GetMaxY); {центра окружности} Circle(x,у,Random(GetMaxY div 4)); until KeyPressed; if ReadKey=#0 then x := ord(ReadKey); CloseGraph end end. Процедура Arc. Чертит дугу окружности. Заголовок: Procedure Arc(X,Y: Integer; BegA,EndA,R: Word); Здесь X, Y - координаты центра; BegA, EndA - соответственно начальный и