![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
BRS |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 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 |
![]()
Сообщение
#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 - 30.10.2004 13:31 |
Altair |
![]()
Сообщение
#3
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
По порядку.
Цитата перекрасить по какому нить правилу какойнить пиксель: Можно обращаться к люьому пикселу на экране: 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) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:18 |