Автор: BRS 30.10.2004 14:45
Собственно есть ли такая возможность в пасале?
Предположим в какой то момент программы, необходимо зделать скажем 5 проверок на каждый пиксель и потом перекрасить по какому нить правилу какойнить пиксель:
[code]for i:= 1 to 640 do
for j:= 1 to 480 do
begin
if... then... putpixel
if... then... putpixel
if... then... putpixel
if... then... putpixel
if... then... putpixel
end;
собственно понятно, что вполне заметно как экран будет заполняться рядами примерно за 0,5 сек.
Так вот.
Можно ли ка нибудь сделать следуюющее. Во время выполнения цикла - заполнять мнимый (второй / что то вроде бекграунда) экран, а пользователю в это время показывать что нибудь еще ( ну напиример мигающую надпись WAIT!).
Автор: volvo 30.10.2004 17:31
BRS
Для этого можно использовать процедуры SetActivePage и SetVisualPage. Но я не уверен, что режима 640х480 есть больше одной видеостраницы... Для режимов с меньшим разрешением это делается так:
Код
...
{ Выводим сообщение на видимой странице...
по умолчанию - страница №0 }
OutTextXY(GetMaxX div 2, GetMaxY div 2, 'Wait');
{ Устанавливаем страницу №1 активной, но не видимой }
SetActivePage(1);
{ Заполняем невидимую страницу }
for i:= 1 to 640 do
for j:= 1 to 480 do
{ заполнение экрана }
{ Делаем заполненную страницу видимой }
SetVisualPage(1);
...
Автор: Altair 30.10.2004 17:42
По порядку.
Цитата
перекрасить по какому нить правилу какойнить пиксель:
Можно обращаться к люьому пикселу на экране:
getpixel putpixel - первая возвращает цвет вторая загружает в пикель цвет.
(кажется параметрами там координаты, точно не помню, давно с графикой такой не работал, введите getpixel и нажмите СTRL+F1, там посмотрите параметры обращения)
Цитата
Во время выполнения цикла - заполнять мнимый (второй / что то вроде бекграунда) экран
Да, можно, это называется использованием видеостраниц.
Принцип таков:
делаем активной страницу.
рисуем на ней.
Выводим активную страницу.
Это процедуцры:
Цитата
Устанавливает активную страницу для графического вывода.
Объявление:
Procedure SetActivePage(Page : Word);
Режим:
Real, Protected
Замечания:
Делает страницу с номером Page активной, направляя на нее весь последующий
графический вывод.
Многостраничный вывод возможен только на EGA (256Кб), (S)VGA и Hercules.
Используя многостраничный режим, программа может осуществлять графические
построения на неактивной странице, затем переключать страницы с помощью
SetVisualPage, тем самым практически мгновенно отображать картинку на
экране. Эта методика особенно полезна при создании анимационных программ.
Цитата
Устанавливает номер видимой графической страницы.
Объявление:
Procedure SetVisualPage(Page : Word);
Режим:
Real, Protected
Замечания:
Делает графическую страницу с номером Page видимой.
Многостраничный вывод обеспечиваются только адаптерами EGA, (S)VGA и
графическими платами Hercules. Используя многостраничный режим, программа
может осуществлять графические построения на неактивной странице, затем
переключать страницы с помощью данной процедуры, тем самым практически
мгновенно отображать картинку на экране. Эта методика особенно полезна при
создании анимационных программ.
(из справки по TP)