前2天老许和我抱怨wow运行起来太暗,我也一直觉得不太适应,就建议他提高下屏幕的Gamma,他嫌换了以后其他窗口又太亮。本来我一直以为Gamma值的调整涉及到驱动,今天早上在看资料的时候看到原来有API,函数原形如下:
BOOL WINAPI GetDeviceGammaRamp(
HDC hDC,
LPVOID lpRamp
);
BOOL WINAPI SetDeviceGammaRamp( HDC hDC, LPVOID lpRamp );
其中lpRamp指向的是一个3x256的WORD型数组,内部存放的是需要Gamma校正的梯度,范例如下:
void * lpGamma = NULL;
WORD gMap[3][256] = {0};
lpGamma = &gMap;
HDC hdc = ::GetDC(NULL);
::GetDeviceGammaRamp(hdc, lpGamma); //得到当前Gamma
for (INT i = 0; i < 256; i++)
{
gMap[0][i] = 256*i;
gMap[1][i] = 256*i