Farbe heller machen

  • Themenstarter Themenstarter KocksundNuts
  • Beginndatum Beginndatum
K

KocksundNuts

Gast
Hallo,

mein Problem ist es. Ich habe JLabels, wo ich die Transparenz ausgeschaltet habe. Diese JLabels besitzen eine Farbe. Nun möchte ich das diese Farbe um z.B. 20 oder 10 Abstufungen heller wird. Hab schon was von AlphaComposite gelesen. Das Problem ist aber, dass diese nicht auf JLabels anwendbar sind.
Gibt es eine Methode? oder wie kann ich das am besten realisieren?
die Farbe ist z.b.

Color col = new Color(255,250,225);
Daraus soll jetzt 10 oder 20 hellere Farben entstehen!
 
dies habe ich schon ausprobiert, leider sind die Abstufungen zu groß
immoment mache ich dies nach dieser Methode:

Java:
if(counter>=1) {
switch(counter) {
     case 1: color = new Color(255,250,225); break;
     case 2: color = new Color(255,245,200); break;
     case 3: color = new Color(255,240,175); break;
     case 4: color = new Color(255,235,150); break;
     case 5: color = new Color(255,230,125); break;
     case 6: color = new Color(255,225,100); break;
     case 7: color = new Color(255,220,75); break;
     case 8: color = new Color(255,215,50); break;
     case 9: color = new Color(255,210,25); break;
     default: color = new Color(255,205,0);
}
 
Das ist eigentlich OK, wenn es in einer kleinen statischen Hilfsmethode steht. Ansonsten könnte man noch sowas machen wie
Code:
Color brighter(Color c, float factor)
{
    int r = c.getRed();
    int g = c.getGreen();
    int b = c.getBlue();
    r = (int)(r * factor);
    g = (int)(g * factor);
    b = (int)(b * factor);
    r = Math.min(255,r);
    g = Math.min(255,g);
    b = Math.min(255,b);
    return new Color(r,g,b);
}
oder irgenwas ganz sophisticatetes (und so gesehen "genaueres" in Bezug auf das Ziel, NUR die Helligkeit zu erhöhen) was dann über die Umwandlung in HSB laufen würde, Pseudocode
Code:
Color brighter(Color c, float factor)
{
    float hsb[] = new float[3]
    Color.RGBtoHSB(c, hsb);
    hsb[2] *= factor;
    hsb[2] = Math.min(1.0f, hsb[2]);
    int rgb = Color.HSBtoRGB(hsb);
    return new Color(rgb);
}
 

Zurück
Oben