C++ Windows 10夜灯是如何实现的?
Windows 10具有更改屏幕色温的功能,名为夜灯。这是一个蓝光减少功能 <>我想用C++实现C++中的这个特性的克隆。但是我不知道怎么做C++ Windows 10夜灯是如何实现的?,c++,windows,winapi,C++,Windows,Winapi,Windows 10具有更改屏幕色温的功能,名为夜灯。这是一个蓝光减少功能 我想用C++实现C++中的这个特性的克隆。但是我不知道怎么做 如何使用win api访问屏幕并更改其在系统范围内的显示内容?它必须具有资源效率 我们能不能只在一个给定的窗口上应用它,而不是在整个屏幕上 期望操作系统允许您做它自己做的事情并不总是正确的。仅仅因为“操作系统应该能够访问屏幕”并不意味着你(在userland中)应该能够做到这一点。而且最肯定的是,在Windows下,您无法不受限制地访问屏幕,尤其是因为DRM
- 如何使用win api访问屏幕并更改其在系统范围内的显示内容?它必须具有资源效率
- 我们能不能只在一个给定的窗口上应用它,而不是在整个屏幕上
- 最传统的兼容方式是使用自Windows 2000以来支持的API。要使用的函数是。这里有一个警告:Windows不允许对颜色进行过多压缩,而且它允许的内容非常随意。如果您试图“做得太多”,这一系列API可能会失败
- 另一个高度兼容的API是Direct3D 9(从Windows 98和XP开始提供)。它提供与上面的
相同的数据表格式SetDeviceGammaRamp
- 另一个高度兼容的API将在Direct3D 10-12中,具体来说。此版本自Windows Vista开始提供,因此在当前(2020)支持的Windows版本上可用
这可以使用颜色校正方案进行模拟。有一个开源项目,DisplayCAL。它是一种校准器,用于其他用途,也允许使用各种校准器设备。基本上,所有图形输出设备都有一个数字滤波器,它可以将源RGB转换为屏幕RGB,并且有可能对其进行更改。Linux在某些DistROS中有类似的东西。……什么是访问屏幕的规范方式……“C++没有直接的方式访问屏幕,你必须使用第三方API /库。对于WinAPI使用,甚至使用windows API?操作系统应该能够访问屏幕。我用“Windows10夜光api”关键字在互联网上搜索了一下,找到了。最近你在网上搜索过吗?@ThomasMatthews,你读过实际问题和答案的评论吗?;-)里面什么都没有。