【问题标题】:C++ && QT Is there a way to create "warm screen" color using c++ and qt on Mac && WindowsC++ && QT 有没有办法在 Mac && Windows 上使用 c++ 和 qt 创建“暖屏”颜色
【发布时间】:2016-10-24 12:49:43
【问题描述】:

有没有办法改变屏幕“饱和度”?在 win\mac 上使用 c++ && qt 将屏幕设为暖色 \ 或将其设为棕褐色?

作为参考,现代显示器有这样一个更改屏幕颜色的菜单选项,或者您也可以查看 linux f.lux 的应用程序作为参考...

我想到的第一件事是创建一些透明的“顶部窗口”制作屏幕截图并玩转 rgb ......但这不是最好的解决方案

【问题讨论】:

  • 你可以为linux上的一些windows管理器创建一个插件。锁定平台祝你好运。
  • 鉴于 f.lux 在 Windows 上也可用,可能有一种方法可以在该平台上执行您所要求的操作。
  • 但是好像没有flux src文件,需要找一些smilar programm
  • 如果这只是针对您的应用程序,您可以使用Windows Color System 来控制颜色的显示方式。

标签: c++ macos qt winapi


【解决方案1】:

没有 Qt API 可以帮助您。在任一平台上,您都必须使用原生 API 来更改屏幕色彩再现曲线并将色温转换为暖色调。 OS X 上的情况会更加统一,因为执行此操作的 API 要么存在于所有硬件上,要么不存在于任何硬件上。在 Windows 上,事情可能会更复杂。可能存在一些未记录的供应商 API,由各自的供应商控制面板用于更改色温。您还可以通过各种方式将自己连接到屏幕合成管道中,但这可能需要编写驱动程序。不幸的是,我不太熟悉它有多么容易。它可能非常简单或非常复杂。有一些简单的解决方法,例如 adding a translucent tinted window on top of everything,但看起来不太好。

【讨论】:

  • “那些看起来不太好” - 这真的是你最不担心的。到目前为止,最严重的事实是,用户无法再与桌面交互。
  • @IInspectable 可以有对鼠标透明且无法聚焦的窗口,这样不会有问题。
  • 这需要一个完全透明的窗口。你不能有一个对鼠标输入透明的半透明窗口。
  • @IInspectable 至少它是可能的,如果有点笨拙的话,在 Windows 上。我不了解 OS X。
  • 我指的是 Windows,不,您不能拥有对鼠标输入透明的半透明窗口。你可以有一个完全透明的窗口,它会接受命中测试,或者一个完全透明的窗口,它对鼠标输入也是透明的。就是这样。
【解决方案2】:

C++ 和 Qt 都没有提供这样的功能。对于 windows,似乎可以修改显示器的亮度和对比度,但仅此而已,没有饱和度,没有着色。

“制作屏幕截图并玩转 rgb”将具有糟糕的性能和许多其他可能的复杂性,例如事件处理。

现在,如果您想为您的 Qt 应用程序应用颜色过滤器,Qt 有 QGraphicsEffect 类,它会自动与渲染系统挂钩,将目标缓存到图像并应用达到预期效果。我不确定这对于“顶部透明窗口”的想法有多好。

它只有几个库存效果,但您可以轻松推出自己的效果。然后您可以使用QWidget::setGraphicsEffect(QGraphicsEffect * effect) 将其应用于所需的小部件或派生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2012-03-06
    相关资源
    最近更新 更多