Рейтинг@Mail.ru
TMT Logo

МОДУЛЬ GRAPH
Графическая Библиотека для TMT Pascal v3.50SP2
Часть 8

Copyright (c) 1997,98 TMT Development Corp.
All Rights Reserved

Если вы заметили в документе
опечатки или неточности перевода,
просьба сообщить о них!
Перевод на русский язык и оформление:
Валерий Вотинцев

К Содержанию


Процедуры и Функции



SetScreenStart (процедура)

Задает стартовый адрес на логической странице, начиная с которого изображение выводится на экран. Sets the CRTC display starting address to the specified value.

Объявление:
 procedure SetScreenStart (X,Y: DWord; WaitForRetrace: Boolean);
Пояснения:
Эта процедура задает координаты пиксела (X,Y) на логической странице, который будет выведен на экран в качестве левого верхнего пиксела. Эту процедуру Вы можете использовать для выполнения аппаратного скроллинга и панорамирования изображения, размеры которого превышают физические размеры экрана.
Кроме того, ее можно использовать для быстрого переключения между двум экранами для двойного буферирования анимационных эффектов. (Более подробную информацию можно найти в VBE Core Standard).

Если параметр WaitForRetrace установлен в True, то перед переключением адреса процедура будет ожидать обратного вертикального хода луча. В противном случае синхронизация не производится. Такое поведение процедуры гарантировано только при наличии VBE 2.0. Если установленная видео-карта поддерживает только VBE 1.2, то нет никаких гарантий, что синхронизация будет выполнена.

К СодержаниюНаверх

SetSVGAMode (процедура)

Устанавливает SVGA видео режим с заданным разрешением и количеством цветов.

Объявление:
 procedure SetSVGAMode (XRes, YRes, BPP, VMode: Word);
Пояснения:
Параметры XRes и YRes задают требуемое разрешение;
Параметр BPP определяет "глубину цвета", т.е. количество бит на 1 пиксел и должен иметь значение [8,15,16,24,32].
Параметр VMode может принимать следующие значения в дипазоне [1..3]:
 Константа  Значение  Пояснение 
 LFBorBanked  0  Установить режим LFB или с переключением банков 
 BankedOnly   1  Установить режим только с переключением банков
 LFBOnly   2  Установить только LFB режим

Так, следующий пример:
 SetSVGAMode(640,480,8,LfbOrBanked);
приведет к установке SVGA режима с разрешение 640x480, 8 бит на пиксел (т.е. всего 256 цветов). Если режим LFB поддерживается, то он будет установлен; если же нет - то будет установлен режим переключения банков.

К СодержаниюНаверх

SetTextJustify (процедура)

Устанавливает режим выравнивания текста для процедур OutText и OutTextXY.

Объявление:
 procedure SetTextJustify(Horiz, Vert: DWord);
Пояснения:
Процедура SetTextJustify устанавливает параметры выравнивания текста по горизонтали (параметр Horiz) и по вертикали (параметр Vert) относительно текущего указателя или указанной точки.

Рассмотрим следующий пример:
  SetTextJustify(CenterText, CenterText);
  OutTextXY(100, 100, 'ABC');
В данном случае текстовая строка "ABC" будет центрирована по горизонтали и вертикали относительно точки (100, 100), т.е. эта точка будет находитьс точно в середине буквы "B".
По умолчанию выравнивание текста происходит в соответствии с вызовом
 SetTextJustify(LeftText, TopText).
В случае задания недопустимых параметров выравнивания для SetTextJustify, в переменной GraphResult будет возвращено значение кода ошибки grError, и параметры выравнивания не изменятся.

К СодержаниюНаверх

SetTextStyle (процедура)

Задает стиль вывода текста в графическом режиме.

Объявление:
 procedure SetFontStyle(Font, Direction: DWord);

К СодержаниюНаверх

SetTranspMode (процедура)

Устанавливает или сбрасывает режим прозрачности при выводе изображений.

Объявление:
 procedure SetTranspMode(Mode: Boolean; Color: DWord);
Пояснения:
Модуль TMT Graph поддерживает прозрачность при выводе изображений (BitMaps). Если параметр Mode имеет значение True, то режими прозрачности используется. При этом параметр Color определяет, какой именно цвет в изображении является прозрачным. При выводе изображения на экран будут отображены только те пикселы, цвет которых отличается от Color; все же остальные пикселы, имеющие цвет Color, будут проигнорированы при выводе.
Такая технология вывода изображений очень удобна для программирования игр. Работа с прозрачными изображениями поддерживается в любом графическом режиме (MCGA/VGA, SVGA 256, 32K, 64K, 16M и 16M+Alpha цветов, как с LFB, так и с переключением банков)!

Действие процедуры SetTranspMode оказывает влияние только на вывод изображений с помощью следующих процедур: PutPixel, PutSprite и PutImage.

К СодержаниюНаверх

SetViewPort (процедура)

Устанавливает область видимости, или, другими словами, окно для вывода графики.

Объявление:
 procedure SetViewPort(x1, y1, x2, y2: LongInt; Clip: Boolean);
Пояснения:
(X1,Y1) задают левый верхний угол окна, а (X2, Y2) - нижний правый угол. После задания окна, адресация точек в нем осуществляется с нуля, т.е. левый верхний угол внутри окна имеет координаты (0, 0).

Логический параметр Clip определяет, будет ли использоваться в данном окне отсечение выводимых изображений, если они выходят за границы данного окна. Чтобы установить окно целиком на все изображение, следует выполнить
   SetViewPort(0, 0, GetMaxX, GetMaxY, True);
Если координаты окна заданы неверно, т.е. (X1 >= X2) или (Y1 >= Y2), то в переменной GraphResult будет возвращен код ошибки grError, и текущее окно не будет изменено. Модуль TMT Garph позволяет назначать окно (ViewPort) даже за пределами экрана!

Все графические команды (например, GetX, OutText, Rectangle, MoveTo, и т.д.) осуществляют свой вывод именно в установленное окно (viewport).

Если параметр Clip установлен в True, то все, что выходит за границы окна, будет отсечено. Однако, текущий указатель, естественно, никогда не отсекается. Рассмотрим следующий пример:
  SetViewPort(10, 10, 20, 20, ClipOn);
  Line(0, 5, 15, 5);
Здесь выводимая линия не будет полностью отрисована, поскольку часть ее выходит за пределы окна, и поэтому будет отсечена. Если бы режим отсечения не был задан, то линия начиналась бы в точке с абсолютными координатами (10,15) и заканчивалась в точке с абсолютными координатами (25, 15). Но, поскольку отсечение включено, будет отрисована только часть линии, а именно от точки с абсолютными координатами (10, 15) до точки с абсолютными координатами (20, 15).

Обращение к процедурам SetSVGAMode, GraphDefaults, и SetGraphMode сбрасывает окно до размеров полного графического экрана. Параметры текущего окна можно получить посредством вызова процедуры GetViewSettings, которая возвращает структуру типа ViewPortType.

После вызова SetViewPort текущий указатель сбрасывается в (0, 0).

К СодержаниюНаверх

SetVirtualMode (процедура)

Устанавливает виртуальный графический режим.

Объявление:
 procedure SetVirtualMode (BuffAddr: Pointer)
Пояснения:
Эта процедура переадресует все графические операции непосредственно в виртуальный видео буфер в памяти, на который ссылается указатель BuffAddr. Прежде, чем выводить что-либо в виртуальный буфер, необходимо выделить под него память с помощью процедуры GetMem. Для определения, какое количество памяти потребуется для виртуального видео буфера, используйте функцию GetPageSize.
Процедура SetVirtualMode не поддерживается в бесплатной версии компилятора TMT Pascal.

См. также: SetNormalMode, FlipToScreen и FlipToMemory.

К СодержаниюНаверх

SetVisualPage (процедура)

Делает указанную графическую страницу видимой.

Объявление:
 procedure SetVisualPage(Page: DWord; WaitForRetrace: Boolean);
Пояснения:
После вызова процедуры становится видимой графическая страница с указанным номером.

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

Если параметр WaitForRetrace установлен в True, переключение будет произведено только в момент вертикального обратного хода луча. Флаг ожидания вертикального обратного хода луча входит в спецификацию VBE начиная с версии 2.0, поэтому, если Ваша видео-карта поддерживает только VBE 1.2, то нет никакой гарантии, что будет производитьс такая синхронизация.

К СодержаниюНаверх

SetWriteMode (процедура)

Устанавливает режим записи при рисовании линии.

Объявление:
 procedure SetWriteMode(WriteMode: DWord);
Пояснения:
Существует два режима записи при рисовании линии: простое копирование без учета того, что было раньше изображено под линией (CopyPut), и вывод с учетом изображения, перекрываемого линией (XORPut).
При использовании метода CopyPut для вывода пикселов используетс ассемблерная инструкция MOV, просто перезаписывающая то, что было ранее на экране. При использовании метода XORPut вывод пикселов осуществляетс с помощью инструкции XOR, которая позволяет комбинировать точкт линии с уже имеющимся изображением.
Заметим, что если дважды вывести линию в режиме XOR, то линия сотретс и восстановится предыдущее изображение под линией.

Процедура SetWriteMode оказывает воздействие на результат вывода следующих процедур: DrawPoly, Line, Spline, LineRel, LineTo, Rectangle, Circle, Ellipse, Bar3D, Putpixel, PutSprite и PutImage.

К СодержаниюНаверх

Spline (процедура)

Рисует сплайн.

Объявление:
 Spline(Nodes: Byte; Points: array of PointType);
Пояснения:
Процедура формирует плавную кривую, проходящую через заданную последовательность точек. Параметр Nodes задает количество точек в массиве Points. Каждая точка задается парой координат X и Y типа LongInt.

Для настройки плавности рисуемой сплайн-кривой используется процедура SetSplineSteps.

К СодержаниюНаверх

Stretch (процедура)

Растягивает содержимое экрана по вертикали в Param раз.

Объявление:
 procedure Stretch (Param: Byte);

К СодержаниюНаверх

TextHeight (функция)

Возвращает высоту текста в пикселах.

Объявление:
 function TextHeight(TextString: string): DWord;
Пояснения:
Функция использует высоту текущего фонта для вычисления высоты текстовой строки в пикселах. Эту возможность удобно использовать для настройки расстояний между линиями, вычисления высоты окна, содержащего текст, установления размера текстового заголовка при выводе его внутри прямоугольника или определенной области, и т.д.

Например, если используется фонт 8x8 точек (устанавливается процедурой SetTextStyle), то высота текстовой строки будет равна 8 пикселов.

Рекомендуем не вычислять высоту строки вручную, а использовать для этого функцию TextHeight. В этом случае не потребуется изменять исходный код программы при использовании различных фонтов.

К СодержаниюНаверх

TextWidth (функция)

Возвращает длину строки текста в пикселах.
Объявление:
 function TextWidth(TextString: string): DWord;
Пояснения:
Функция использует ширину текущего фонта и количество символов в строке дл вычисления длины текстовой строки в пикселах. Эту возможность удобно использовать для вычисления ширины окна, содержащего текст, установлени размера текстового заголовка при выводе его внутри прямоугольника или определенной области, и т.д.

Например, при использовании фонта 8x8 точек (установленного процедурой SetTextStyle), длина строки, содержащей 3 символа "TMT", будет равна 24 пиксела.

Рекомендуем не вычислять длину строки вручную, а использовать для этого функцию TextWidth. В этом случае не потребуется изменять исходный код программы при использовании различных фонтов.

К СодержаниюНаверх

TotalVbeMemory (функция)

Возвращает количество установленной видео-памяти в байтах.

Объявление:
 function TotalVbeMemory: DWord;
Пояснения:
Если VESA VBE 1.1+ не поддерживается, то функция вернет ноль.

К СодержаниюНаверх

TotalVbeModes (функция)

Возвращает общее количество поддерживаемых VESA режимов.

Объявление:
 function TotalVbeModes: Word;
Пояснения:
Для получения списка всех поддерживаемых VESA режимов можно воспользоватьс функцией GetVbeModesList.

К СодержаниюНаверх

Triangle (процедура)

Рисует треугольник.

Объявление:
 procedure Triangle (X1,Y1,X2,Y2,X3,Y3: LongInt);
Пояснения:
(X1,Y1), (X2,Y2), (X3,Y3) - координаты вершин треугольника.

К СодержаниюНаверх

Автор русского проекта:
Valery Votintsev

при поддержке
TMT Development Corporation.
All rights reserved.


[Новости]   [Продукты]   [Продажи]   [Скачать]   [Апдейты]   [Поддержка]
[Документация]   [FAQ]   [Contributions]   [Ссылки]   [Связь с TMT]   [Главная]