dvju 查看器WinDjiew 能够调整亮度和对比度,使阅读文档更舒适。见下图。
对我来说,看起来只是改变背景颜色就能达到这种效果,尽管我不知道调整“亮度”和“对比度”的功能实际上应该如何完成。
你知道如何实现这样的功能吗?
这些是常规应用程序私有设置,它们会影响应用程序用于绘制其 UI 的颜色。从你的问题的标题来看,我想你可能认为有某些standard API来控制整个应用程序的亮度,但是它是特定于这个应用程序的完全私有的实现:滑块只是更新内部变量并强制重新绘制应用程序窗口,该窗口使用更新的颜色来绘制自身。
假设您的实现语言可以更改颜色 [R,G,B],其分量红、绿、蓝的值介于 0 到 255 之间。
设 C 为对比度,区间为 0 - 100
设L为光;亮度为 0 - 100
然后对 [R,G,B] 的每个 x 颜色分量进行调整:
var brightness = 2*128*L/100 - 128; // -128 to 128
var contrast = ((x - 128)*C/100 + 128) //max 0 to 255, min 128 to 128
x = contrast + brightness
if (x < 0) x = 0
if (x > 255) x = 255