【问题标题】:processing hex string to color将十六进制字符串处理为颜色
【发布时间】:2018-07-24 11:46:19
【问题描述】:

我正在从 JSON 文件中读取十六进制颜色,但需要将它们作为 int 获取,以便创建颜色。

int col=Integer.parseInt("FF0000",16); 

返回16711680

int c = unhex("FF0000");

返回16711680

我该怎么做?

【问题讨论】:

标签: java colors hex processing


【解决方案1】:

如果你想重新发明轮子,你可以将字符串解析成 RGB 十六进制值“FF”、“00”和“00”,将十六进制值转换为对应的整数(分别为 255、0 和 0)转换为 0-255 之间的值,然后使用这些 RGB 值创建一个 Color 对象。

但就个人而言,我只是使用:

Color red = Color.decode("#FF0000"); //That's definitely red

【讨论】:

  • 请注意processing 标签。 Processing 是它自己的语言,您应该在 Processing 中使用 Java 的 AWT Color 类型。推荐阅读:Processing != Java
  • 鉴于 java 标记很容易犯错误。
  • 我没有说别的。
【解决方案2】:

你把两件事混为一谈:

第一件事:#FF0000这样的十六进制值表示整数值。

第二件事:在内部,Processing 将颜色值表示为整数。

第一个概念中的整数与第二个概念中的整数不同。

事实上,十六进制颜色值是处理编辑器处理中的一种特殊情况,它为您发挥了一些作用。我不知道直接从字符串值到十六进制颜色值的方法。

相反,您应该将 String 值解析为其各个组件,将它们转换为整数,然后使用三参数 color() 函数来创建颜色。

有关更多信息,请参阅此问题:Hexadecimal to Integer in Java

【讨论】:

    【解决方案3】:

    我所做的只是像这样重新创建颜色:

    int c = Integer.parseInt(obj.getString("color"), 16);
    c = color(red(c), green(c), blue(c));
    

    【讨论】:

      【解决方案4】:

      您可以尝试使用以下 -

      Color c = Color.parseColor("#c0c0c0");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-24
        • 2012-11-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-25
        • 2018-03-27
        • 2019-06-09
        • 2011-05-29
        相关资源
        最近更新 更多