Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

Как изменить яркость монитора и контрастность   Найти похожие ветки 

 
Sergeika   (2004-10-03 06:33) [0]

Значит нужно сделать так, что бы можно было узнать какая сейчас яркость установлена в настройках для монитора и  потом её изменить.
В MSDN СКАЗАНО, что нужно юзать ChangeDisplaySettingsEx.
Так вот юзал, а толку нет, не хочет работать.
Кто сталкивался с подобной задачей или может просто знает как, помогите разобраться.
Зараннее благодарен.


 
KilkennyCat ©   (2004-10-03 07:46) [1]

как же Вы ее юзали-то?

LONG ChangeDisplaySettingsEx(
 LPCTSTR lpszDeviceName,  
 LPDEVMODE lpDevMode,    
 HWND hwnd,              
 DWORD dwflags,          
 LPVOID lParam);

lpszDeviceName - это у нас девайс
lpDevMode - имеет следующее:
 dmBitsPerPel  
 dmPelsWidth  
 dmPelsHeight  
 dmDisplayFlags  
 dmDisplayFrequency  
 dmPosition

hwnd - ну это явно

dwflags - флажок, все перечислять не буду, наиболее интересный - CDS_VIDEOPARAMETERS

что с ним можно:
ежели он стоит, то lParam указывает на следующее:
dwOffset;
dwCommand;
dwFlags;
dwMode;
dwTVStandard;
dwAvailableModes;
dwAvailableTVStandard;
dwFlickerFilter;
dwOverScanX;
dwOverScanY;
dwMaxUnscaledX;
dwMaxUnscaledY;
dwPositionX;
dwPositionY;
dwBrightness; ----- вот они!
dwContrast;   -----/
dwCPType;
dwCPCommand;
dwCPStandard;
dwCPKey;
bCP_APSTriggerBits;
bOEMCopyProtection[256];


Что сложного?


 
XProger ©   (2004-10-03 08:30) [2]


// получение текущей гаммы в процентах (69% по дефолту у большинства)
function xglGamma_Get: integer; stdcall;
var
ramp : array [0..256 * 3 - 1] of WORD;
rgb  : array [0..2] of double;

sum   : double;
count : integer;
min   : integer;
max   : integer;
A, B  : double;
i, j  : integer;
begin
rgb[0] := 1;
rgb[1] := 1;
rgb[2] := 1;

GetDeviceGammaRamp(DC, ramp);
// проходим по цветам в rgb
for i := 0 to 2 do
begin
sum   := 0;
count := 0;
min   := 256 * i;
max   := min + 256;
// разбираем формулу из xglGamma_Set
for j := min to max - 1 do
 if ramp[j] > 0 then
  begin
  B := (j mod 256)/256;
  A := ramp[j]/65536;
  sum := sum + ln(A)/ln(B);
  inc(count);
  end;
rgb[i] := sum / count;
end;

Result := 100 - trunc(((rgb[0] + rgb[1] + rgb[2])/3 - 0.23) * 100/(2.7 - 0.23));
end;

// установка гаммы (0 - темно 100 - ярко)
procedure xglGamma_Set(gamma: integer); stdcall;
var
ramp : array [0..256*3 - 1] of WORD;
i    : integer;
r    : double;
g    : double;

function Pow(x, y: double): double;
begin
Result := exp(y * ln(x));
end;

begin
xglGamma := gamma;
g := (100 - gamma)*(2.7 - 0.23)/100 + 0.23;

for i := 0 to 255 do
begin
r := pow(i/256, g)*65536;
if r < 0 then
 r := 0
else
 if r > 65535 then
  r := 65535;

ramp[i]       := trunc(r);
ramp[i + 256] := trunc(r);
ramp[i + 512] := trunc(r);
end;

SetDeviceGammaRamp(DC, ramp);
end;


 
KilkennyCat ©   (2004-10-03 16:27) [3]

хе... а я-то, дурилка картонная, считал всегда, что гамма - это вовсе не яркость с контрастностю...


 
Sergeika   (2004-10-05 21:37) [4]

Мне нужно изменить либо контрастность либо яркость, так как это можно сделать кнопками на мониторе. KilkennyCat © привёл структуру, какую надо, только вот напишите как её использовать и инизиализировать.
Заранне благодарен.


 
Sergeika   (2004-10-05 21:37) [5]

Мне нужно изменить либо контрастность либо яркость, так как это можно сделать кнопками на мониторе.
KilkennyCat © привёл структуру, какую и надо, только вот напишите как её использовать и инизиализировать.
Заранне благодарен.


 
Sergeika   (2004-10-06 21:42) [6]

Ну кто-нибудь помогите. Мастера!!!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.038 c
14-1098882807
Yuri Btr
2004-10-27 17:13
2004.11.14
Intel Signal Processing Library


6-1094133088
Евгений30048
2004-09-02 17:51
2004.11.14
Как закачать на сервер БИНАРНЫЙ файл по http?


14-1098798518
oldman
2004-10-26 17:48
2004.11.14
Я ЕЕ ТАКИ РЕШИЛ!!!


1-1099051007
Tolya
2004-10-29 15:56
2004.11.14
TDateTimePicker


14-1098860395
han-bratan
2004-10-27 10:59
2004.11.14
Delphi 2005





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский