| 
 
 МОДУЛЬ GRAPH
Графическая Библиотека для TMT Pascal v3.50SP2
 Часть 4
Copyright (c) 1997,98  TMT Development Corp.
All Rights Reserved
 
Если вы заметили в документе
опечатки или неточности перевода,
 просьба сообщить о них!
 Перевод на русский язык и оформление:
 Валерий Вотинцев
 
К Содержанию
 
 Процедуры и Функции
 
 AnalizeRGB (процедура)
 Возвращает RGB составляющие указанного цвета.
Объявление:
 
 procedure AnalizeRGB (Color: Dword; var R,G,B: Byte);
 
 Пояснения:
 Данная функция работает только с SVGA режимами HiColor и TrueColor.
 Значения RGB составляющих, возвращаемые процедурой AnalizeRGB, зависят
 от того, какой именно видео режим установлен (32K, 64K или 16M цветов).
 Arc (процедура)
 Рисует дугу окружности.
Объявление:
 
 procedure Arc (X,Y; Integer; StAngle, EndAngle, Radius; Word);
 
 Пояснения:
 Дуга начинается от радиального угла StAngle (стартовый угол) и закачиваетс
 в точке с углом EndAngle; Radius - радиус окружности;
 (x,y) - точка центра окружности.
 Bar (процедура)
 Рисует прямоугольник, закрашенный текущим цветом заполнения.
Объявление:
 
 procedure Bar(x1, y1, x2, y2: LongInt);
 
 Пояснения:
 С помощью данной процедуры можно рисовать закрашенные изнутри прямоугольники,
 часто используемые, например, в столбиковых диаграммах. Для заполнени
 используется цвет, задаваемый в SetFillColor.
 Если требуется отрисовка внешнего контура прямоугольника,
 то для этого следует использовать вызов Bar3D с указанием нулевой глубины.
 Bar3D (процедура)
 Рисует 3-D прямоугольник (параллелепипед),
 закрашенный текущим цветом заполнения.
Объявление:
 
  procedure Bar3D(x1, y1, x2, y2: DWord; Depth: Word; Top: Boolean);
 
 Пояснения:
 Процедура Bar3D рисует трехмерный прямоугольник (параллелепипед),
 заполненный изнутри цветом и образцом заполнения, задаваемыми процедурой
 SetFillColor. 3-D обрамление прямоугольника рисуется линией текущего стил
 и цвета, которые устанавливаются процедурами SetLineStylle и SetColor.
 Параметр "Depth" задает глубину в пикселях внешней 3-D обводки.
 Если значение Top = TopOn, то верхняя грань рисуется, если TopOff = False,
 то, соответственно, нет. Таким образом, имеется возможность изображать
 множество параллелепипедов, располагая их один над другим.
 Типичное значение глубины обычно составляет 25% от ширины прямоугольника:
    Bar3D(X1, Y1, X2, Y2, (X2 - X1 + 1) div 4, TopOn);
 Circle (процедура)
 Рисует окружность с центром в точке (X,Y) текущим цветом, установленным
 с помощью SetColor.
Объявление:
 
 procedure Circle(X,Y: LongInt; Radius: DWord);
 
 Пояснения:
 При рисовании учитывается коэффициент пропорциональности,
 зависящий от установленного графического режима.
 ClearDevice (процедура)
 Очищает выбранное текущим устройство вывода и устанавливает указатель
 в начальное положение.
Объявление:
 
 procedure ClearDevice;
 
 Пояснения:
 ClearDevice перемещает текущий указатель в точку (0, 0),
 и очищает всю доступную видео-память нулями.
 ClearPage (процедура)
 Очищает текущую активную страницу цветом фона, установленным процедурой
 SetBkColor, и перемещает текущий указатель в точку (0, 0).
Объявление:
 
 procedure ClearPage;
 
 Пояснения:
 Следует учитывать, что активная логическая страница, установленна
 процедурой SetLogicalPage, может быть больше размеров физического экрана.
 ClearViewPort (процедура)
 Очищает видимую часть изображения (view port) фоновым цветом,
 установленным процедурой SetBkColor, и перемещает текущий указатель
 в начальное положение (0, 0).
Объявление:
 
 procedure ClearViewPort;
 
 CliRetrace (процедура)
 Запрещает прерывания, ожидает обратного вертикального хода луча,
 затем снова разрешает прерывания.
Объявление:
 
 procedure CliRetrace;
 
 CliHRetrace (процедура)
 Запрещает прерывания, ожидает обратного горизонтального хода луча,
 затем снова разрешает прерывания.
Объявление:
 
 procedure CliHRetrace;
 
 CloseGraph (процедура)
 Полностью закрывает графическую систему.
Объявление:
 
 procedure CloseGraph;
 
 Пояснения:
 Процедура CloseGraph восстанавливает состояние экрана, которое было до
 инициализации графической системы и освобождает память, выделенную
 под графический буфер.
 DetectSVGAMode (функция)
 Врзвращает правильный номер VESA VBE режима для запрашиваемого видео-режима.
 Если запрашиваемый видео-режим не поддерживается, то возвращается ноль.
Объявление:
 
 function DetectSVGAMode (XRes,YRes,BPP,VMode: Word): Word;
 
 Пояснения:
 Эта функция может быть использована совместно с процедурой SetGraphMode.
 В следующем примере производится попытка установить SVGA режим 640x480
 с максимальным количеством цветов:
 uses Crt,Graph;
 function SetSVGA640x480: String;
 const Bps: array [0..4] of Word=(32,24,16,15,8);
 var   Mode,i: Word;
 begin
  for i:=0 to 4 do begin
   Mode:=DetectSVGAMode(640,480,bps[i],LfbOrBanked);
   if Mode>0 then begin
    SetGraphMode(Mode);
    if GraphResult=grOk then begin
     Str(bps[i],Result);
     exit;
    end;
   end;
  end;
  RestoreCrtMode;
  Result:='';
 end;
 var S: String;
 begin
  S:=SetSVGA640x480;
  if S<>'' then begin
   SetTextJustify(CenterText,CenterText);
   OutTextXY(320,240,'Установлен SVGA режим 640x480 '+S+' bps');
   OutTextXY(320,260,'Нажмите любую клавишу...');
   ReadKey;
   RestoreCrtMode;
  end else
   Writeln(' Режим SVGA 640x480 не поддерживается...');
 end.
 DrawEllipse (процедура)
 Рисует эллипс с центром в точке (X,Y). Параметры "A" и "B" задают
 габариты эллипса соответственно по горизонтали и по вертикали.
 Объявление:
 procedure DrawEllipse(X, Y, A, B: LongInt)
 
 DrawHLine (процедура)
 Рисует ГОРИЗОНТАЛЬНУЮ линию установленным цветом заполнения (fill color).
Объявление:
 
 procedure DrawHLine (X1,X2,Y: LongInt);
 
 DrawPoly (процедура)
 Рисует выпуклый многоугольник текущим цветом и стилем линии.
Объявление:
 
 procedure DrawPoly(NumVert: DWord; var Vert);
 
 Пояснения:
 Параметр Numvert задает количество вершин в многоугольнике.
 Каждая вершина описывается парой координат (X,Y) типа LongInt в массиве Vert.
 Эта процедура отличается от аналогичной процедуры из модуля Borland GRAPH.
 Внутренние углы в многоугольнике НЕ ДОЛЖНЫ превышать 180 градусов,
 т.е. многоугольник должен быть выпуклым.
                                    /\
            /\                      \ \
            \ \                     /  \
             \ \                    \/\ \
              \/                       \/
        1. Правильный       2. Неправильный
           многоугольник       многоугольник
 Если Вам требуется нарисовать неправильный многоугольник (2),
 то Вы должны предварительно разделить его на 2 правильных:
                     /\               /\
                     \ \              \ \
         /\     +     \ \      =      /  \
         \/            \ \            \/\ \
                        \/               \/
 Ellipse (процедура)
 Рисует ЧАСТЬ эллипса.
Объявление:
 
 procedure Ellipse(X,Y: LongInt;
                   StAngle, EndAngle,
                   XRadius, YRadius: DWord);
 Пояснения:
 Процедура Ellipse рисует дугу эллипса начиная с угла StAngle до угла
 EndAngle, с радиусами XRadius и YRadius, и точкой центра (X,Y).
 ExpandFill (процедура)
 Закрашивает ограниченную область текущим цветом.
Объявление:
 
 procedure ExpandFill(X, Y: Integer);
 
 Пояснения:
 Процедура заливает текущим цветом, установленным с помощью SetFillColor,
 закрытую область растрового изображения. Заливка начинается в точке (X, Y).
 Если эта точка находится внутри зоны одного цвета, то зона будет закрашена
 изнутри. Если же точка находится снаружи - то будет залито все за пределами
 данной зоны.
 FillEllipse (процедура)
 Рисует закрашенный эллипс
Объявление:
 
 procedure FillEllipse(X, Y, A, B: LongInt)
 
 Пояснения:
 (X,Y) - точка центра;
A и B - габариты по горизонтали и вертикали.
 
 FillPoly (процедура)
 Рисует закрашенный многоугольник.
Объявление:
 
 procedure FillPoly(NumVert: DWord; var Vert);
 
 Пояснения:
 Vert - содержит пары координат (X,Y:LongInt) для всех вершин многоугольника.
NumVert - количество вершин в многоугольнике.
 Процедура FillPoly сначала рассчитывает все точки пересечения ребер
 многоугольника, и затем закрашивает его цветом, установленным процедурой
 SetFillColor.
 
 FillTriangle (процедура)
 Рисует закрашенный треугольник.
Объявление:
 
 procedure FillTriangle (X1,Y1,X2,Y2,X3,Y3: LongInt);
 
 FlipImageOY (процедура)
 Переворачивает растровое изображение (BitMap) по вертикали
 (зеркальный поворот относительно оси OX).
Объявление:
 
 procedure FlipImageOY (var BitMap);
 
 Пример:
 uses Graph, CRT;
 var P: Pointer;
     i,j,dx,dy: DWord;
 begin
  { Set SVGA mode 640x480x256. You can set ANY supported mode }
  SetSVGAMode(640,480,8,LfbOrBanked);
  if GraphResult<>grOk then begin
   ClrScr;
   Writeln(GraphErrorMsg(GraphResult));
   exit;
  end;
  dx:=(GetMaxX+1) div 2;
  dy:=(GetMaxY+1) div 2;
  for i:=0 to dx do
   for j:=0 to dy do
    PutPixel(i,j,i*j div dx);
  SetTextJustify(CenterText,BottomText);
  OutTextXY(dx,dy+dy div 2,'Press any key...');
  ReadKey;
  GetMem(P,ImageSize(0,0,dx-1,dy-1));
  GetImage(0,0,dx-1,dy-1,P^);
  FlipImageOX(P^);
  PutImage(dx,0,P^);
  FlipImageOY(P^);
  PutImage(dx,dy,P^);
  FlipImageOX(P^);
  PutImage(0,dy,P^);
  ReadKey;
  FreeMem(P,ImageSize(0,0,dx-1,dy-1));
  RestoreCrtMode;
 end.
 FlipImageOX (процедура)
 Переворачивает растровое изображение (BitMap) по горизонтали
 (зеркальный поворот относительно оси OY).
Объявление:
 
 procedure FlipImageOX (var BitMap);
 
 Пояснения:
 См. пример для FlipImageOY.
 FlipToMemory (процедура)
 Копирует содержимое нулевой графической страницы в буфер, на который
 указывает указатель Addr.
Объявление:
 
 procedure FlipToMemory (Addr: Pointer)
 
 Пояснения:
 Эта процедура весьма удобна для копирования содержимого текущей графической
 страницы в виртуальный буфер для последующей обработки.
 FlipToMemory НЕ ПОДДЕРЖИВАЕТСЯ в бесплатной версии TMT Pascal.
 FlipToScreen (процедура)
 Копирует содержимое из буфера памяти, адресуемого указателем Addr,
 в нулевую графическую страницу.
Объявление:
 
 procedure FlipToScreen (Addr: Pointer)
 
 Пояснения:
 Эта процедура очень удобна для переноса уже обработанного изображени
 из виртуальной страницы на графическую страницу.
 FlipToScreen НЕ ПОДДЕРЖИВАЕТСЯ в бесплатной версии TMT Pascal.
 FloodFill (процедура)
 Производит заливку области до границы указанного цвета.
Объявление:
 
 procedure FloodFill(X, Y: Integer; Border: Word);
 
 Пояснения:
 Используется для заливки области, ограниченной цветом,
 задаваемым в параметре Border. Заливка производится текущим цветом заливки,
 установленным процедурой SetFillColor. (X, Y) - стартовая точка заливки.
 |