Графика |
Графика |
Altair |
28.01.2005 23:16
Сообщение
#1
|
Ищущий истину Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Графика в Паскале.
Как инициализировать графику ? Вот код для инициализации лучшего из доступных видеорежимов. Код {Программа инициализирует граф. режим и ждет нажатия клавиши. код для TP7, BP7, BPW, FPC} Uses Graph, Crt; Var gd,gm:integer; Begin gd:=detect; InitGraph(gd,gm,''); readkey end. Инициализируется режим 16 цветов, разрешением 640x480. Если Вы желаете большего, необходимо использовать уже нестандартные драйвера. Например SVGA256 или VESA256. Остановимся на последнем. VESA 256 цветов (8bit). Есть 2 способа установить данный видеорежим. 1 способ - подключить bgi драйвер. вот так: Код Uses Graph,CRT; Var dg,gm:Integer; Begin gd:=InstallUserDriver('vesa256',nil); gm:=3; {mode = 0-4} initgraph(gd,gm,''); readkey; end. Инициализируется режим 8bit (256 цветов) 1024x768. 2 способ. Использовать специальную библиотеку. Вот пример для библиотеки VESA256, написанной Dark'om. скачать архив с модулем Функции, доступные, при подключении модулей vesa256, vesatype; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Function TestMode(mode:word):boolean; Возвращает истину если видеорежим mode доступен. Procedure VSetMode(mode:word); Устанавливает VESA режим. procedure VClrScr(col:byte); Очистка экрана procedure VPutPixel(x,y:word;col:byte); Рисование точки (x,y) уветов col. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Это основа для творчества в VESA 8bit режиме. КОнечно вывод линий, окружностей, и проч., необходимо реализовывать самостоятельно с помощью алгоритмов брезенхейма. Пример: (вывод 256 цветной радуги в VESA режиме.) Код uses crt,vesa256,vesatype; var i,j:byte; begin VSetMode($101); for i:=1 to 255 do for j:=1 to 100 do vputpixel(i,j,i); readkey end. Одним из недостатков этого режма - недоступность мыши. То есть мышь конечно рабоатет, но указатьель не отображается на экране, и по умолчанию указатель может перемещаться только в 0-ом окне VESA. Есть 2 решения это проблеммы - написать свой драйвер или эмулировать в программе вывод курсора картинкой. режим 13h Самый известный графический режим для ДОСа - под номером 13h mode 13h - MCGA (VGA) 320x200x256 (8-битный цвет) видеопамять проецируется на ОЗУ одной страницей в 64000 байт, т.е. целиком умещается в один сегмент! и даже в реальном режиме процессора весь экран доступен без переключения страниц !!! Вывод точки в режиме 13h. Код procedure putpixel(x,y: integer; c: byte); begin mem[$A000:y*320+x]:=c; end; где $A000 - адрес сегмента ОЗУ, в который проецируется видеопамять в графических режимах VGA (CGA и EGA вроде с $B000), к слову: в текстовом режиме видеопамять доступна с адреса $B800... Включение режма: Код procedure setmode(mode: byte); assembler; asm mov ah,0; //команда (0-установка видеорежима) mov al,mode; int 10h; //видео-служба BIOSа end; Библиотеки для работы с 13h режимом: xvga svga256.rar ( 4.6 килобайт ) Кол-во скачиваний: 1395 vesa256.rar ( 3.27 килобайт ) Кол-во скачиваний: 1338 Прикрепленные файлы mcga.zip ( 7.95 килобайт ) Кол-во скачиваний: 789 -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Текстовая версия | 22.09.2024 14:23 |