【问题标题】:Set the LSB of Java java.awt.Color RGB components设置 Java java.awt.Color RGB 组件的 LSB
【发布时间】:2010-12-24 13:51:14
【问题描述】:

有没有办法改变java.awt.Color RGB分量的LSB值?

【问题讨论】:

  • 你到底想做什么?改变一个特定的颜色成分?
  • 是的,这与在 Color 对象上调用 setBlue() 有何不同(假设为 RGB 空间)?
  • 也许不是专门的颜色类。我真正想知道的是如何将整数的最低有效位随意设置为 1 或 0。

标签: java colors rgb pixel


【解决方案1】:

Color 类是不可变的,你不能改变任何东西。但是,您可以创建具有任何值的新颜色。例如,

   int oldValue = oldColor.getRGB();
   int newValue = (oldValue & 0xFFFFFF00) | (lsb & 0xFF);
   Color newColor = new Color(newValue);

【讨论】:

    【解决方案2】:

    打开一点:

    int value = someValue | 0x1;
    

    关掉一点:

    int value = someValue & (~0x1);
    

    如果之前关闭或打开,则打开或关闭位:

    int value = someValue ^ 0x1;
    

    换句话说: someValue 与 LSB 开启的数字进行二进制或运算,因此生成的数字也将开启 LSB。

    someValue 与所有位 除了 LSB 开启的数字进行“与”运算,因此生成的数字将 LSB 关闭。

    someValue 与一个 LSB 打开的数字进行异或运算,因此生成的数字将切换其 LSB。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 2014-12-23
      • 2021-02-08
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多