Voici un code javascript que j'utilise pour éclaircir/assombrir une couleur donnée. Vous pouvez l'utiliser comme base pour une fonction C# équivalente.
Il fonctionne en calculant une distance par rapport au blanc pur de chacune des composantes RVB, puis ajuste cette distance par le facteur fourni. La nouvelle distance est utilisée pour calculer la nouvelle couleur. Un facteur compris entre 0 et 1 assombrit la couleur, un facteur supérieur à 1 l'éclaircit.
function Darken( hexColor, factor )
{
if ( factor < 0 ) factor = 0;
var c = hexColor;
if ( c.substr(0,1) == "#" )
{
c = c.substring(1);
}
if ( c.length == 3 || c.length == 6 )
{
var i = c.length / 3;
var f; // the relative distance from white
var r = parseInt( c.substr(0, i ), 16 );
f = ( factor * r / (256-r) );
r = Math.floor((256 * f) / (f+1));
r = r.toString(16);
if ( r.length == 1 ) r = "0" + r;
var g = parseInt( c.substr(i, i), 16);
f = ( factor * g / (256-g) );
g = Math.floor((256 * f) / (f+1));
g = g.toString(16);
if ( g.length == 1 ) g = "0" + g;
var b = parseInt( c.substr( 2*i, i),16 );
f = ( factor * b / (256-b) );
b = Math.floor((256 * f) / (f+1));
b = b.toString(16);
if ( b.length == 1 ) b = "0" + b;
c = r+g+b;
}
return "#" + c;
}
1 votes
Duplicata possible de Comment puis-je régler la luminosité d'une couleur ?