mit Farben rechnen geschrieben am 08.05.2011
Für das einfache abdunkeln, aufhellen oder ausgrauen von einer Farbe habe ich folgende Funktionen geschrieben:
Farbe nach schwarz abdunkeln:
ActionScript3private function farbedunkler(farbe:Number, dunkler:Number=1):Number {//1=Originalfarbe 0=schwarz
//Multiplikator Bereichsprüfung
if (dunkler > 1) dunkler = 1;
if (dunkler < 0) dunkler = 0;
//Farbe in rgb zerlegen und abdunkeln
var r:Number = ((farbe >> 16)*dunkler) & 0xff;
var g:Number = (((farbe >> 8) & 0xff)*dunkler) & 0xff;
var b:Number = ((farbe & 0xff)*dunkler) & 0xff;
var re:Number= (r << 16) + (g << 8) + b;
return re;
}
Farbe nach weiß aufhellen:
ActionScript3private function farbeheller(farbe:Number, heller:Number=1):Number {//0=Originalfarbe 1=weiß
//Gültigkeitsbereich des Multiplikators
if (heller > 1) heller = 1;
if (heller < 0) heller = 0;
//Farbe in rgb zerlegen
var r:Number = (farbe >> 16) & 0xff;
var g:Number = (farbe >> 8) & 0xff;
var b:Number = farbe & 0xff;
//Farbe aufhellen
r = (r +(255 - r) * heller) & 0xff;
g = (g +(255 - g) * heller) & 0xff;
b = (b +(255 - b) * heller) & 0xff;
var re:Number= (r << 16) + (g << 8) + b;
return re;
}
Farbe ausgrauen (08.10.2011 aktualisiert):
ActionScript3
private function farbegrau(farbe:Number, grau:Number=1):Number {//0=Originalfarbe 1=grau
//Gültigkeitsbereich des Multiplikators
if (grau > 1) grau = 1;
if (grau < 0) grau = 0;
//Farbe in rgb zerlegen
var r:Number = (farbe >> 16) & 0xff;
var g:Number = (farbe >> 8) & 0xff;
var b:Number = farbe & 0xff;
var grauton:Number = (0.299 * r + 0.587 * g + 0.114 * b)& 0xff;//Grau der Farbe
//Farbe anteilig nach Grau verschieben
if (r > grauton)
r = (grauton +(r - grauton) * (1-grau))& 0xff;
else
r = (r + (grauton - r) * grau) & 0xff;
if (g > grauton)
g = (grauton +(g - grauton) * (1-grau))& 0xff;
else
g = (g + (grauton - g) * grau) & 0xff;
if (b > grauton)
b = (grauton +(b - grauton) * (1-grau))& 0xff;
else
b = (b + (grauton - b) * grau) & 0xff;
var re:Number= (r << 16) + (g << 8) + b;
return re;
}