Гамма, яркость, констрастность монитора - как их изменять на Delphi 5
Заранее длагодарен. Если есть какието вопросы можете обратится лично ко мне, чем смогу тем помогу!!! ICQ:169406011 (vid)
On 2002-09-16 0441, Vid wrote
Как изменить гамму, яркость, констрастность монитора из Delphi, если можете дайте пожалуйста UNIT(PAS, TPU) или кусочек кода.
Заранее длагодарен. Если есть какието вопросы можете обратится лично ко мне, чем смогу тем помогу!!! ICQ169406011 (vid)
Вопрос конечно интересный. Признаюсь, в первый момент я хотел ответить "а UNIT для вытаскивания сетевого шнура из розетки Вам не надо?"...
Если никто не предложит ничего лучше, попробуте залезть в реестр. Я через Registry Editor у себя в Win2000 задал поиск по фразе "contrast" и наткнулся на ветку HKEY_CURRENT_USER \ Control Panel \ Accessbility \ HighContrast \High Contrast Sheme , которая по-видимому хранит настройки схемы контрастности. Это корявое решение, но всё же...
On 2002-09-20 1231, lpt wrote
[quote]
On 2002-09-16 0441, Vid wrote
Как изменить гамму, яркость, констрастность монитора из Delphi, если можете дайте пожалуйста UNIT(PAS, TPU) или кусочек кода.
Заранее длагодарен. Если есть какието вопросы можете обратится лично ко мне, чем смогу тем помогу!!! ICQ169406011 (vid)
Вопрос конечно интересный. Признаюсь, в первый момент я хотел ответить "а UNIT для вытаскивания сетевого шнура из розетки Вам не надо?"...
Если никто не предложит ничего лучше, попробуте залезть в реестр. Я через Registry Editor у себя в Win2000 задал поиск по фразе "contrast" и наткнулся на ветку HKEY_CURRENT_USER Control Panel Accessbility HighContrast High Contrast Sheme , которая по-видимому хранит настройки схемы контрастности. Это корявое решение, но всё же...
[/quote]
В том то и дело, что мне надо это делать инерактивно, гоп изменил, гоп еще изменил, а вообще можно как нибудь перевести экран в текстовой режим и чего-нибуть там напечать, чего нибудь ввести (writeln/readln), но так, что вывести из этого режима могла только моя программа, но ни как не пользователь!
то поиск по индексу слова HIGHCONTRAST выведет Вас на т.н. Accessibility Structures
и в частности на структуру tagHIGHCONTRAST.
Боюсь, что никаких других возможностей больше не существует, так как скорее всего поставленная Вами проблема - аппаратнозависимая (т.е. зависящая от "железа"), а значит связанная с написанием драйверов. А это, согласитесь в Вашей ситуации бессмысленно, так как заранее неизвестно, с каким оборудованием Вашей программе придется работать в будущем.
Жалко, но HIGHCONTRAST решит Вашу проблему лишь частично.
On 2002-09-23 1359, lpt wrote
Ну если интерактивно, тогда ищите WinAPI - функции. Например, если в хелпе по Delphi выйти на раздел Win32 Programmer`s Reference,
то поиск по индексу слова HIGHCONTRAST выведет Вас на т.н. Accessibility Structures
и в частности на структуру tagHIGHCONTRAST.
Боюсь, что никаких других возможностей больше не существует, так как скорее всего поставленная Вами проблема - аппаратнозависимая (т.е. зависящая от "железа"), а значит связанная с написанием драйверов. А это, согласитесь в Вашей ситуации бессмысленно, так как заранее неизвестно, с каким оборудованием Вашей программе придется работать в будущем.
Жалко, но HIGHCONTRAST решит Вашу проблему лишь частично.
Я прочитал хелп по HIGHCONTRAST - это связанно с с высококонтрастными цветовыми схемами, для полховидящих под 95.
SetDeviceGammaRamp
GetDeviceGammaRamp
Там массиф используется:
[1..3,0..255] of WORD;
1..3 - это R,G,B;
а 0..255 это для кождого цвета "точки" графика функции, как в дополнительных настройках экрана.
Но я заметил следующее
Пусть
var a:array[1..3,0..255] of word;
begin
GetDeviceGammaRamp(getdc(0),a);
a[1,2]:=123 * 255;
SetDeviceGammaRamp(getdc(0),a);
end;
то все цвета экрана которые имею красную составляющую 2 будут отабражатсья, как будто они имеют красную составляющую ((123 * 255) div 255);
Естественно если вы захотите делать плавные переходы, то вы заменете GetDC(0) чем нибудь другим... Пишите: vid@sakhgu.sakhalin.ru