![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Altair |
![]()
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
У меня вот появилось 2 вопроса:
1) Как менять палитру в 256 цв. режиме (процедура setallpalette -не работает в 256 цв.) 2) При замене палитры в 256 цв. режиме, то, что уже на экран выведенно, будет замененно на новые цвета, или только индексы цветов поменяются? Если у кого есть идеи, подскажите пожалуйста. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Да...
Есть стандартная процедура setRGBPalette. А вот модернизированная: Код procedure set256palette(var rgb_buffer);{Sets 256 color palette} begin with regs do begin ax :=$1012; bx :=0; cx :=256; es :=seg(rgb_buffer); dx :=ofs(rgb_buffer); intr($10,regs); end; end; rgb_buffer - перед вызовом процедуры, надо сформировать массив : array[0..255] of record color,r,g,b :byte end; у меня остался один вопрос: а как получить палитру для каждого цвета (или сразу весь массив ) ? Стандартная процедура не работает в 256 цветном режиме! (GetPalette) ------ Вот в интернете нашел что: поцедура получения палитры для цвета Код Procedure GetPal(ColorNo : Byte; Var R,G,B : Byte); { This reads the values of the Red, Green and Blue values of a certain color and returns them to you. } Begin Port[$3C7] := ColorNo; R := Port[$3C8];{You can put in all of numbers $3C8 number $3C9 and then it will get palette with maximum 63 digits each color} G := Port[$3C8]; {I can't find Port, to read color palette} B := Port[$3C8]; {Thats the Port of 8 bit grayscale!} End; {If You know, wich port is the right to read all palette with all its colors, E-Mail me and send this Port number - PLEASE!} Но все было бы хорошо, если бы она работала! Я ее так тестировал: Вывожу все 256 цветов в линию (получаю "радугу") Пробую для всех цветов получить палитру, получаю, что r=g=b=color+1; Вывожу BMP рисунок (с функцией замены палитры) Пробую заменить палитру на r=g=b=color+1; Снова вывожу радугу Получаю вместо цветной радуги - черно-белую! У кого-нибудь есть идеи? ------ Зато сразу получаю ответ на 2 вопрос - ПРИ ЗАМЕНЕ ПАЛИТРЫ, все на экране меняет цвет! -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 18:08 |