Hi @ll
ich hab mal google durchstöbert und das forum aber nicht wirklich fündig geworden
Ich habe ein C++ und ein VB Source gefunden der die GAMMA-CONTROL macht
Delphi-Quellcode:
void CGammaSlider::SetGamma(float Gamma)
{
WORD ramp[256*3];
for(int i = 0; i < 256; i++) {
ramp[i] = ramp[i+256] = ramp[i+512] =
(WORD)min(65535, max(0, pow((i+1) / 256.0, Gamma) * 65535 + 0.5));
}
SetDeviceGammaRamp(::GetDC(NULL), ramp);
}
das ist der C++ Source Code
ich hab das mal wiefolg übersetzt ( c++ ist nicht sooo mein ding
)
Delphi-Quellcode:
procedure SetGamma(var Gamma: Double);
Var
Ramp: array[0 .. 255, 0 .. 2] of double;
nVal: double;
I: integer;
begin
For I:= 0 To 255 do
begin
nVal:= ((((I + 1) / 256) * (1 / Gamma)) * 65535 + 0.5);
Ramp[I, 0]:= nVal;
Ramp[I, 1]:= nVal;
Ramp[I, 2]:= nVal;
end;
SetDeviceGammaRamp(GetDC(0), Ramp);
end;
Jedoch ändert sich mein Gamma gar nicht , wenn ich das setgamma aufrufe ( natürlich mit werten )
setgamma(20) z.b.
Ich hoffe hier sind ein paar die das vielleicht besser übersetzten können,damit es funktioniert - oder ob ich über ne function fürs SetDeviceGammaRamp genen muss , welches im moment in der windows.pas ist jedoch auch in der gdi32 ...
So ich pack an Anhang das C++ Compilte programm damit ihr seht das es funktioniert
Hoffe mir kann jemand helfen !