【问题标题】:Detect color is light or dark in flutter在颤动中检测颜色是浅色还是深色
【发布时间】:2021-09-11 04:14:48
【问题描述】:

有什么方法可以检查颜色是暗还是亮,在某种意义上是黑色或白色的颤动,并得到一个布尔值 true 或 false

【问题讨论】:

标签: flutter user-interface colors


【解决方案1】:

要检查颜色是深还是浅,我们需要将该颜色转换为其灰度颜色。根据 RGB 值求任意颜色灰度的公式为:

灰度 = (0.299 * 红色) + (0.587 * 绿色) + (0.114 * 蓝色)

然后检查:

if(grayscale > 128){
    // color is light
}else{
    // color is dark
}

【讨论】:

    【解决方案2】:

    您还可以使用该方法获取亮度并应用 W3C 指定的阈值。在 dart 代码中可能如下所示:

    Color getFontColorForBackground(Color background) {
      return (background.computeLuminance() > 0.179)? Colors.black : Colors.white;
    }
    

    更多背景信息可以在这里找到:https://stackoverflow.com/a/3943023/3041394

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2020-12-21
      • 2014-10-15
      • 2019-08-20
      相关资源
      最近更新 更多