Die Funktion GammaCorrectionApplyToDIB verändert die Helligkeitswerte einer DIB zur Gamma-Korrektur:
void WINAPI GammaCorrectionApplyToDIB( |
||
HDIB |
hDIB, |
|
int |
iGamma10000, |
|
int |
iReserved1, |
|
int |
iReserved2, |
|
LPBYTE |
lpabGamma); |
hDIB |
HDIB |
Handle der anzupassenden DIB, |
iGamma1000 |
int |
Gamma-Korrekturwert, (siehe Gamma-Korrektur), mit 10000 multipliziert, |
iReserved1 |
int |
reserviert für zukünftige Benutzung. Die Anwendung gibt 0 an, |
iReserved2 |
int |
reserviert für zukünftige Benutzung. Die Anwendung gibt 0 an, |
lpabGamma |
LPBYTE |
Zeiger auf ein Array von 256 Byte-Werten die von der Funktion GammaCorrectionGetArray berechnet wurden oder NULL. |
Anmerkungen |
||
Die DIB wird dauerhaft verändert. Der Vorgang ist nicht umkehrbar. Die Anwendung kann eine Kopie einer bestehenden DIB leicht mit der Funktion CopyHandle erstellen. |
||
Falls die DIB eine auf Farbpaletten basierende DIB ist (biBitCount <= 8) wird nur die Farbpalette modifiziert. Benutzt die DIB keine Farbpalette, (biBitCount >8) so wird jedes einzelne Byte der DIB modifiziert, was mehr Zeit beansprucht. |
||
Beispiel: Gamma-Korrektur auf eine DIB anwenden. |
||
HDIB GammaCorrect(float Gamma, HDIB hOriginalDIB) |
||
{ |
||
HDIB hDIB = CopyHandle(hOriginalDIB); |
||
BYTE Array[256]; |
||
if (hDIB) |
||
{ |
||
GammaCorrectionGetArray(Gamma * 10000, 0, 0, Array); |
||
GammaCorrectionApplyToDIB(hDIB, Gamma*10000, 0, 0, Array); |
||
} |
||
return hDIB; |
||
} // GammaCorrect |