IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Бекграунд
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Собственно есть ли такая возможность в пасале?
Предположим в какой то момент программы, необходимо зделать скажем 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!).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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);
...


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


По порядку.
Цитата
перекрасить по какому нить правилу какойнить пиксель:

Можно обращаться к люьому пикселу на экране:
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)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 0:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name