Farbwert (Hexadezimal) abdunkeln?

Jens B.

Erfahrenes Mitglied
Hi,

ich habe folgendes Problem: ich habe ganz viele Objekte, in denen 2 Farbwerte gespeichert sind:

farbe
grundfarbe

Farbe stellt die tatsächlich angezeigte Farbe dar, grundfarbe aber die Farbe ohne umwelteinflüsse (licht usw). Beide Werte sind Hexadezimal. Außerdem hab ich eine Variable mit einem %-Wert "prozent" die angibt, um wieviel Farbe dunkler (also näher an schwarz) sein soll als Grundfarbe.

Ich habs schon durch simples Multiplizieren versucht, was nix gebracht hat. Ich habs dann erst in eine int-Zahl umgewandelt und dann wieder in Hexadezimal, aber auch da blieb der Bildschirm weiß.

Wie mache ich einen Hexadezimalwert also prozentual dunkler?

Gruß,
Jens
 
Hi,

Du zerlegst den Hexwert zuerst in drei einzelne Zahlen für rot, grün und blau:
PHP:
var col = "FFA40B"; // Hexwert

while (col.length < 6) {
    col = "0" + col;
}

var r = parseInt(col.substr(0, 2), 16);
var g = parseInt(col.substr(2, 2), 16);
var b = parseInt(col.substr(4, 2), 16);
Dann rechtest Du alle Werte runter:
PHP:
var factor = 0.76;
r = int(r * factor);
g = int(g * factor);
b = int(b * factor);

.. und setzt den Kram wieder zusammen:
PHP:
var rgb = r * 0x10000 + g * 0x100 + b;

Gruß
.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück