МОДУЛЬ GRAPH
Графическая Библиотека для TMT Pascal v3.50SP2
Часть 7
Copyright (c) 1997,98 TMT Development Corp.
All Rights Reserved
Если вы заметили в документе
опечатки или неточности перевода,
просьба сообщить о них!
Перевод на русский язык и оформление:
Валерий Вотинцев
К Содержанию
Процедуры и Функции
Rectangle (процедура)
-
Рисует незакрашенный прямоугольник текущим цветом и стилем линии.
Объявление:
procedure Rectangle(x1, y1, x2, y2: LongInt);
-
Пояснения:
-
(X1, Y1) - левый верхний угол прямоугольника
(X2, Y2) - правый нижний угол прямоугольника
Прямоугольник может пересекать границы физического экрана.
-
Цвет и стиль линии прямоугольника определяется процедурами SetLineStyle и
SetColor. Метод вывода на экран (Copy или XOR) задается процедурой
SetWriteMode.
RestoreCrtMode (процедура)
-
Восстанавливает видео-режим, который был ранее установлен до инициализации
графической системы.
Объявление:
procedure RestoreCrtMode;
-
Пояснения:
-
Процедура восстанавливает оригинальный видео-режим, запоминаемый при
парвом обращении к процедуре SetGraphMode или SetSVGAMode.
Процедура RestoreCrtMode может быть использована совместно с SetGraphMode
и SetSVGAMode для переключения из гафического режима в исходный текстовый,
и обратно.
Retrace (процедура)
-
Ожидает обратного вертикального хода луча.
Объявление:
procedure Retrace;
RGBColor (функция)
-
Преобразует указанные значения RGB составляющих цвета в номер цвета,
который используется процедурами рисования графических примитивов.
Объявление:
function RGBColor(R, G, B: Byte): DWord;
-
Пояснения:
-
Процедура предназначена для упаковки RGB значений в нормальный цвет
с учетом установленного графического режима. Обычно используется в
многоцветных режимах (15, 16, 24 и 32 бита на пиксел), и гарантирует
корректную работу с цветами для любого доступного графического режима.
SetActivePage (процедура)
-
Устанавливает активную страницу для графического вывода.
Объявление:
procedure SetActivePage(Page: DWord);
-
Пояснения:
-
Процедура делает активной страницу, номер которой задается в переменной
Page, направляя в нее весь графический вывод.
-
Несколько графических страниц поддерживаются только в SVGA видео-картах.
При использовании нескольких страниц, программа имеет возможность
осуществлять прямой графический вывод на разные страницы и затем быстро
отображать их с помощью простого переключения посредством процедуры
SetVisualPage. Такая технология особенна удобна для анимации изображений.
SetAllPalette (процедура)
-
Заменяет текущую палитру на заданную.
Объявление:
procedure SetAllPalette(var Palette);
SetAspectRatio (процедура)
-
Изменяет текущий коэффициент пропорциональности.
Объявление:
procedure SetAspectRatio(AspectRatio: Real);
-
Пояснения:
-
Процедура SetAspectRatio используется для изменения коэффициента
пропорциональности, установленного по умолчанию для текущего графического
режима. Коэффициент пропорциональности используется при рисовании
окружностей. Если Вы видите, что нарисованная окружность выглядит как
эллипс, значит Ваш монитор настроен неправильно. В такой ситуации
можно воспользоваться либо ручками (или кнопками) настройки на самом
мониторе, либо сделать программную коррекцию коэффициента пропорциональности
с помощью процедуры SetAspectRatio.
-
Для получения текущего коэффициента пропорциональности можно воспользоватьс
процедурой GetAspectRatio.
SetBkColor (процедура)
-
Устанавливает цвет фона (один из установленной палитры).
Объявление:
procedure SetBkColor(ColorNum: Word);
-
Пояснения:
-
Цвет фона может принимать одно из значений в диапазоне 0..GetMaxColor,
который, в свою очередь, зависит от используемого графического драйвера
и установленного графического режима. Цвет фона используется процедурами
ClearViewPort и ClearPage для очистки изображения. Процедура SetBkColor
не изменяет самый первый цвет в активной палитре! Для изменения одного
из цветов палитры необходимо воспользоваться процедурами GetRGBPalette и
SetRGBPalette.
SetColor (процедура)
-
Устанавливает цвет для рисования (один из установленной палитры).
Объявление:
procedure SetColor(Color: DWord);
-
Пояснения:
-
Цвет рисования может принимать одно из значений в диапазоне 0..GetMaxColor,
который, в свою очередь, зависит от используемого графического драйвера
и установленного графического режима.
SetCustomFont (процедура)
-
Устанавливает фонт (шрифт), созданный пользователем.
Объявление:
procedure SetCustomFont (AddrPtr: Pointer;
Width,Height,Start,Space: DWord);
-
Пояснения:
-
Указатель AddrPtr указывает на размещение в памяти буфера с пользовательским
фонтом. Параметр Width задает горизонтальный размер символа в пикселах,
деленный на 8. Параметр Height - высота символов в пикселах.
SetFillColor (процедура)
-
Устанавливает звет для заполнения закрашенных областей.
Объявление:
procedure SetFillColor (Color: DWord);
-
Пояснения:
-
Процедура устанавливает цвет заполнения, который используется в процедурах
FillPoly, Bar, Bar3D, FillCircle, FillEllipse, FloodFill и ExpandFill.
Модуль TMT Graph в настоящее время не поддерживает заполнение с помощью
образца заполнения. Образец заполнения раньше часто использовался в CGA,
EGA и 16-цветных VGA режимах для рисования диаграмм.
Модуль TMT Graph не поддерживает устаревшие 16-цветные режимы.
SetGraphBufSize (процедура)
-
Изменяет размер графического буфера, используемого для рисования эллипса.
Объявление:
procedure SetGraphBufSize (BufSize: DWord);
-
Пояснения:
-
Вы можете изменить размер внутреннего графического буфера, задав его новое
значение в параметре BufSize. Память под внутренний графический буфер
выделятся при обращении к процедурам SetGrapMode и SetSVGAMode.
Процедура CloseGraph освобождает память, выделенную под графический буфер.
Для выяснения текущего размера графического буфера можно воспользоватьс
функцией GetGraphBufSize.
SetGraphMode (процедура)
-
Устанавливает заданный графический режим и очищает экран.
Объявление:
procedure SetGraphMode(Mode: Word);
-
Пояснения:
-
Задаваемый в параметре Mode режим должен быть доступен для используемой
видео-карты. Процедура SetGraphMode поддерживает все VESA VBE графические
режимы (100h - FFFh), которые поддерживает установленная видео-карта.
Примеры:
-
SetGraphMode($101) - установить SVGA режим 640x480, 256-цветов;
SetGraphMode($114) - установить SVGA режим 800x600, 64K-цветов;
SetGraphMode($12A) - установить SVGA режим 1024x768, 16M-цветов + Alpha;
Учитывайте, что не любая видео-карта поддерживает все эти режимы.
(См. описание GetVbeModesList и TotalVbeModes).
Кроме перечисленных обязательно поддерживаются еще 2 режима:
-
$03 - VGA текстовый режим;
$13 - MCGA/VGA графический режим 320x200, 256-цветов.
Процедура SetGraphMode может быть использована для переключения из
графического режима в текстовый, и обратно.
При вызове процедуры SetGraphMode все графические установки сбрасываютс
в значения по умолчанию (текущий указатель, палитра, цвета, видима
область и т.д.).
SetLineStyle (процедура)
-
Устанавливает толщину и стиль линии.
Объявление:
procedure SetLineStyle(LineStyle: Word;
Pattern: Word;
Thickness: Word);
-
Пояснения:
-
Данная установка оказывает влияние на все процедуры, рисующие линейные
графические примитивы (Line, Spline, LineTo, Rectangle, DrawPoly, и т.д.).
Линия может быть сплошной, пунктирной (точечной), штрих-пунктирной,
штриховой или произвольной, заданной пользователем. Если в параметре
LineStyle передано недопустимое значение, то в переменной GraphResult
будет возвращен код ошибки grError, а текущие установки для линии не
изменятся.
Значения констант для задания стиля линии описаны в файле INT/GRAPH.INT
Константы стиля линии | Значение | Вид линии |
SolidLn | 0 | Сплошная линия |
DottedLn | 1 | Пунктирная линия |
CenterLn | 2 | Штрих-пунктирная линия |
DashedLn | 3 | Штриховая линия |
UserBitLn | 4 | Стиль, определяемый пользователем |
|
Константы толщины линии | Значение | Вид линии |
NormWidth | 1 | Тонкая линия |
ThickWidth | 3 | Утолщенная линия |
Как видим, LineStyle может принимать значения от SolidLn до UserBitLn (0..4),
причем параметр Pattern инорируется для всех стилей, кроме UserBitLn.
Толщина линии может принимать значение NormWidth (нормальная) или
ThickWidth (утолщенная).
-
Если задан пользовательский стиль линии (UserBitLn), то при выводе
используется образец рисования линии, задаваемый в 16-битном параметре
Pattern.
Например, если Pattern = $AAAA, то битовый образец для вывода
линии будет иметь следующий вид:
1010101010101010 { Для нормальной толщины, NormWidth }
Если задана "Утолщенная" линия, то она будет выводится как три рядом
лежащих линии, и при этом образец тоже "утолщается" в три раза.
1010101010101010 { Для утолщенной линии, ThickWidth }
1010101010101010
1010101010101010
SetLogicalPage (процедура)
-
Устанавливает размер логической страницы в пикселах.
Объявление:
procedure SetLogicalPage(SX,SY: Word);
-
Пояснения:
-
Праметры SX и SY задают размер страницы соответственно по горизонтали,
и по вертикали.
Многие SVGA видео-карты поддерживают логические страницы.
Размер логической страницы может превышать размер физического экрана.
Так, можно задать размер логической страницы 1280x480, в то время,
как физическое разрешение экрана составляет, например, 640x480.
В этом случае только половина логической страницы будет видна на экране.
Просмотреть всю логическую страницу в таком случае можно только с помощью
аппаратного сдвига (скроллинга) изображения.
-
Максимальный размер логической страницы зависит как от типа видео-карты,
так и от количества видео-памяти, установленной на карте.
Для определения текущего размера логической страницы можно воспользоватьс
функцией GetLogicalPage.
-
Поскольку от размера логической страницы зависит количество доступных
графических страниц, процедура SetLogicalPage оказывает влияние на
количество доступных графических страниц и устанавливает логическую
область видимости (ViewPort) соответствующей полному размеру логической
страницы.
-
Не забывайте, что задаваемые Вами габариты логической страницы (SX и SY)
не могут быть меньше, чем физический размер экрана для данного графического
режима.
Приведем пример использования логической страницы:
{Данный пример устанавливает размер логической
страницы в 1280x600 и осуществляет аппаратный
скроллинг изображения }
{ Для работы примера требуется наличие VESA-совместимой
SVGA видео-карты с 1Mb видео-памяти }
uses Graph,Crt;
var ErrorCode,i: LongInt;
SX,SY: Word;
begin
{ установка SVGA режима 640x480x256 }
SetSVGAMode(640,480,8,LfbOrBanked);
ClearDevice;
if GraphResult<>0 then begin
ErrorCode:=GraphResult;
CloseGraph;
Writeln(GraphErrorMsg(ErrorCode));
end;
{ установка логической страницы 1280x600 }
SetLogicalPage(1280,600);
{ проверка размера логической страницы }
GetLogicalPage(SX,SY);
if (SX=640) and (SY=480) then begin
CloseGraph;
Writeln(' Ваша видео-карта не поддерживает'+
' логические страницы!');
end;
{ рисование на логической странице }
SetLineStyle(SolidLn,0,ThickWidth);
SetColor(clRed);
Line(0,0,GetMaxX,GetMaxY);
Line(GetMaxX,0,0,GetMaxY);
SetColor(clWhite);
Rectangle(0,0,GetMaxX,GetMaxY);
{ скроллинг экрана влево }
for i:=0 to (SX-640) div 4 do
SetScreenStart(i*4,0,True);
{ скроллинг экрана вверх }
for i:=0 to (SY-480) div 4 do
SetScreenStart(SX-640,i*4,True);
{ скроллинг экрана вправо }
for i:=(SX-640) div 4 downto 0 do
SetScreenStart(i*4,SY-480,True);
{ скроллинг экрана вниз }
{ scroll the screen down }
for i:=(SY-480) div 4 downto 0 do
SetScreenStart(0,i*4,True);
{ ожидание нажатия любой клавиши }
ReadKey;
{ закрытие графической системы
и восстановление старого видео-режима }
CloseGraph;
end.
SetNormalMode (процедура)
-
Прекращает действие процедуры SetVirtualMode и перенаправляет все графические
операции на активную графическую страницу.
Объявление:
procedure SetNormalMode
-
Пояснения:
-
Процедура SetNormalMode не поддерживается в бесплатной версии компилятора
TMT Pascal.
См. также: SetVirtualMode, FlipToScreen и FlipToMemory.
SetPalette (процедура)
-
Изменяет один из цветов в текущей палитре.
Объявление:
procedure SetPalette(ColorNum: Word; Color: Word);
-
Пояснения:
-
Процедура заменяет старый цвет с номером ColorNum на новый цвет, указанный
в параметре Color. Например, следующий вызов:
SetPalette(0,clLightCyan);
-
заменит самый первый цвет в палитре на "light cyan".
Для 256-цветных (палитровых) графических режимов параметр ColorNum может
принимать значения от нуля до 255. При задании недопустимого цвета
в качестве параметра процедуры SetPalette, в переменной GraphResult будет
возвращено значение кода ошибки grError, и палитра не изменится.
SetRGBPalette (процедура)
-
Изменяет один из цветов в текущей палитре, заданный через RGB составляющие
для VGA, MCGA и 256-цветных SVGA режимов.
Объявление:
procedure SetRGBPalette(ColorNum,
RedValue,
GreenValue,
BlueValue: Byte);
-
Пояснения:
-
ColorNum - номер изменяемого цвета в палитре.
RedValue, GreenValue, BlueValue - RGB составляющие нового цвета.
|