![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Гробовщик |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть необработанный файл (массив данных). Все это выводится на экран посредством битмапа. Не могу вывести это в оттенках серого. Мучался с палитрой, не вышло. Как?
|
![]() ![]() |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код Gray := Round((0.30 * GetRValue(RGBColor)) + (0.59 * GetGValue(RGBColor)) + (0.11 * GetBValue(RGBColor ))); Result := RGB(Gray, Gray, Gray); |
Altair |
![]()
Сообщение
#3
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата Не могу вывести это в оттенках серого. надеюсь 256 палитра ? Есть один способ. заметь, что через каждые 16, в палитре начинается цветвой "блок", там цвета начинаются от светлого к темному (или наоборот - не важно). а http://forum.pascalnet.ru/index.php?showtopic=9037&hl= вот тут я указывал, что от 16 до 32 идет ч\б палитра. Попробуй сопоставить каждому цвету , цвет из этого интервала. Это вариант преобразования без смены палитры. Есть конечно вариант со сменой палитры. вот пример для следующих режимов: VGA, VESA и еще какого-то нестандартного режима, Инициализация режимов (на всякий случай)... asm а вот смена палитры: procedure SetPalette; assembler; { гбв ®ўЄ Ї «Ёвал } если теперь строки add dh,[si+1] заменить на add dh,[si+1] то получим генерацию ч\б палитры. т.е. вот так: procedure SetPalette; assembler; { гбв ®ўЄ Ї «Ёвал } Вот тебе полезный модуль: unit Global; а вот пример его использования: uses -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Гробовщик |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
То Altair: спасибо, этот модуль пригодится. Но хотелось бы под виндовс подкопаться без ассемблера. Скорее нужно рыть в сторону заголовка. У меня не проходит следующий код:
Код var LogPalette: PLogPalette; I: Integer; begin GetMem(LogPalette, SizeOf(TLogPalette) + (NumShades-1)*SizeOf(TPaletteEntry)); LogPalette.palVersion := $300; LogPalette.palNumEntries := 256; for I := 0 to 256 do begin LogPalette.palPalEntry[I].peRed := I; LogPalette.palPalEntry[I].peGreen := I; LogPalette.palPaLEntry[I].peBlue := I; LogPalette.palPalEntry[I].peFlags := 0; end; Result := CreatePalette(LogPalette^); FreeMem(LogPalette) В общем result напрямую присваиваю в один из параметров структуры HBitmap. Не проходит. |
Гробовщик |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Все. Тема закрыта. Спасибо за ответы.
|
Altair |
![]()
Сообщение
#6
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата Но хотелось бы под виндовс подкопаться без ассемблера Так надо было сразу скзаать, что ты в 32 бита пишешь. Есть ведь специальный форум для этого. Цитата Все. Тема закрыта. Спасибо за ответы. Жалко конечно, что ты не сказал как решил проблемму. Заходи на форум еще ! -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 21:00 |