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 |
||