关于用软件修改显示屏亮度的问题,up有分,不够再加 我做的一个SDI程序要求能修改程序亮度,原来我用的是直接修改程序的各种颜色,模拟亮度的变化。但是前一段时间我看到了一个演示程序,它修改的是显示器的亮度,也就是说,当你运行程序的时候,切换出来到windows桌面,桌面的亮度也变了。我不会用,那位高手能帮忙,最好有例子,谢谢。(我找了一些资料,好像叫做调整gamma亮度,不知道是不是这样) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这里有个例子,重新设置Gamma ramp,将所有的R(Red)值设置为0: HDC hDC = ::GetDC(NULL); if (!hDC) return E_FAIL; WORD RamdacTable[3*256]; GetDeviceGammaRamp(hDC, RamdacTable); for (int i = 0; i < 3; ++i) for (int j = 0; j < 256; ++j) if ( i == 0) RamdacTable[i] = 0; else RamdacTable[i*256+j] = j*256; if(!SetDeviceGammaRamp( hDC, RamdacTable)) { BOOL bReason = GetLastError(); ::MessageBox(NULL, "SetDeviceGampRamp failed!", "Error", NULL); } ::ReleaseDC(NULL, hDC); if (!hDC) return E_FAIL;不知道有什么用。还有,程序运行后没有反应。我要怎么办?各位大侠帮忙,谢谢 if(!hDC) return E_FAIL;在你的程序中改成失败返回就可以了。上面的例子出自:http://vip.6to23.com/mays/develop/directx/200111/GammaCalibrator.htm 去http://202.112.105.179/vc看看并查查msdn上的SetDeviceGammaRamp()。 To dycdyc123(重出江湖);你觉得能用API实现吗,请多指教,谢谢。 我的试了,不行!我对IMB的显示器2115!显卡是Trident 9750 4MB! 我公司有一个(不是自己开发的)程序,其中用到了一个功能是可以改变显示器的设置,我试过了,好用。显示器为acer,驱动为“即插即用”,显卡为TNT2 M64 32M显存。还有,现在的大多数显卡都有“彩色校正”功能,打开方法为显示属性-〉设置-〉高级-〉彩色校正。这个东西不会是涉及到驱动程序吧,要是那样就麻烦了。 终于取得了一些进展,pcman1990(pcman) 给出的例子应该说是对的。问题在于RamdacTable里面的值需要满足一定的关系,否者的话系统不会执行SetDeviceGammaRamp函数,这一点我不知道怎么解决,谁能帮我,谢谢。 http://vip.6to23.com/mays/develop/directx/200111/GammaCalibrator.htm 客户程序必须支持DirectDraw,才能调用calibrator。 1)首先,创建一个Direct3D object LPDIRECT3D8 g_pD3D; g_pD3D = ::Direct3DCreate8(D3D_SDK_VERSION) 2)获得当前显示模式 D3DDISPLAYMODE d3ddm; g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm) 3)创建Direct3D device LPDIRECT3DDEVICE8 g_pd3dDevice = NULL; g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice ) 4)检测设备是否支持Gamma Calibration D3DCAPS8 d3dcap; if( FAILED( g_pd3dDevice->GetDeviceCaps( &d3dcap ) ) ) { ::MessageBox(NULL, "GetDeviceCaps", "Failed", NULL); return E_FAIL; } if( !( d3dcap.Caps2 & D3DCAPS2_CANCALIBRATEGAMMA ) ) { ::MessageBox(NULL, "Your machine doesn't support gamma Calibrator", "Warnning", NULL); return E_FAIL; } 5)设置Gamma ramp D3DGAMMARAMP d3dgamaramp; ... // 初始化d3dgamaramp // 设置gamma ramp,同时请求Calibration g_pd3dDevice->SetGammaRamp( D3DSGR_CALIBRATE , &d3dgamaramp); 虚拟示波器 哪位有matlab的教程关于图像处理,最好是视频,谢谢了 如何实现这样的效果,高手进! VFW如何捕获摄像头图像? !!不是很难,想求一个好一点的算法。谢谢大家 把dll中的数据取出来供前端exe调用 本人想用setwindowlong来改变对话框中控件的消息处理函数,请教大虾如何实现 error C2601: local function definitions are illegal(100分) 受朋友所托。500分求助一画图小程序!!! 显示输出的问题 一个关于VC和matlib的问题 VTK配置问题
if (!hDC)
return E_FAIL; WORD RamdacTable[3*256]; GetDeviceGammaRamp(hDC, RamdacTable); for (int i = 0; i < 3; ++i)
for (int j = 0; j < 256; ++j)
if ( i == 0)
RamdacTable[i] = 0;
else
RamdacTable[i*256+j] = j*256; if(!SetDeviceGammaRamp( hDC, RamdacTable))
{
BOOL bReason = GetLastError();
::MessageBox(NULL, "SetDeviceGampRamp failed!", "Error", NULL);
}
::ReleaseDC(NULL, hDC);
return E_FAIL;
不知道有什么用。还有,程序运行后没有反应。我要怎么办?各位大侠帮忙,谢谢
return E_FAIL;
在你的程序中改成失败返回就可以了。上面的例子出自:
http://vip.6to23.com/mays/develop/directx/200111/GammaCalibrator.htm
并查查msdn上的SetDeviceGammaRamp()。
你觉得能用API实现吗,请多指教,谢谢。
显卡是Trident 9750 4MB!
还有,现在的大多数显卡都有“彩色校正”功能,打开方法为显示属性-〉设置-〉高级-〉彩色校正。
这个东西不会是涉及到驱动程序吧,要是那样就麻烦了。
问题在于RamdacTable里面的值需要满足一定的关系,否者的话系统不会执行SetDeviceGammaRamp函数,这一点我不知道怎么解决,谁能帮我,谢谢。
1)首先,创建一个Direct3D object LPDIRECT3D8 g_pD3D;
g_pD3D = ::Direct3DCreate8(D3D_SDK_VERSION) 2)获得当前显示模式 D3DDISPLAYMODE d3ddm;
g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm) 3)创建Direct3D device LPDIRECT3DDEVICE8 g_pd3dDevice = NULL;
g_pD3D->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&g_pd3dDevice
) 4)检测设备是否支持Gamma Calibration D3DCAPS8 d3dcap;
if( FAILED( g_pd3dDevice->GetDeviceCaps( &d3dcap ) ) )
{
::MessageBox(NULL, "GetDeviceCaps", "Failed", NULL);
return E_FAIL;
}
if( !( d3dcap.Caps2 & D3DCAPS2_CANCALIBRATEGAMMA ) )
{
::MessageBox(NULL, "Your machine doesn't support gamma Calibrator", "Warnning", NULL);
return E_FAIL;
} 5)设置Gamma ramp D3DGAMMARAMP d3dgamaramp;
... // 初始化d3dgamaramp // 设置gamma ramp,同时请求Calibration
g_pd3dDevice->SetGammaRamp( D3DSGR_CALIBRATE , &d3dgamaramp);