【问题标题】:Blend 2 Colors in Java在 Java 中混合 2 种颜色
【发布时间】:2014-07-20 14:51:00
【问题描述】:

所以我需要将 2 种颜色与不同的 alpha 值混合。任何一种颜色都可以具有 0-255 的 alpha 颜色。这是我现在使用的算法,它不起作用。如果任一颜色的 alpha 大于 1,则整个颜色变为纯色。在 0-255 的范围内,1 应该几乎完全透明。为了实现这一目标,我需要进行哪些更改?

public void blend(Color color1, Color color2, double ratio) {
        float r = (float) ratio;
        float ir = (float) 1.0 - r;

        float[] rgb1 = new float[3];
        float[] rgb2 = new float[3];

        color1.getColorComponents(rgb1);
        color2.getColorComponents(rgb2);

        Color color = new Color(rgb1[0] * r + rgb2[0] * ir, rgb1[1] * r + rgb2[1] * ir, rgb1[2] * r + rgb2[2] * ir);
        this.color = color;

    }

【问题讨论】:

  • 仔细检查以确保ratio 在0.0-1.0的范围内
  • 请注意:在 Java 中,您应该使用括号声明数组以及类型:float[] rgb1 = new float[3]
  • @vandale 设置为 0.5
  • 对于exampleexample

标签: java colors alphablending


【解决方案1】:

如果您需要做的只是让 alpha 值在 0-255 而不是 0.0-1.0 的范围内,然后将 alpha 值除以 255:

public void blend(Color color1, Color color2, int alpha) {
    float r = alpha/255.0f;
    float ir = 1.0f - alpha/255.0f;
    ...
}

【讨论】:

    猜你喜欢
    • 2014-03-13
    • 2012-10-23
    • 2012-10-20
    • 1970-01-01
    • 2014-05-04
    • 2023-01-31
    • 2013-01-26
    • 2014-04-30
    相关资源
    最近更新 更多