Avatar billede jes-eu Nybegynder
28. august 2005 - 03:08 Der er 3 kommentarer og
1 løsning

Beregn farve interval

Hejsa eksperter,

Jeg skal bruge en funktion der kan beregne farve værdierne i et interval f.eks. mellem sort og hvid.

var textcolor= new Array()
textcolor[0] ="000000"
textcolor[1] ="0A0A0A"
textcolor[2] ="141414"
textcolor[3] ="1F1F1F"
textcolor[4] ="292929"
textcolor[5] ="333333"
textcolor[6] ="3D3D3D"
textcolor[7] ="474747"
textcolor[8] ="525252"
textcolor[9] ="5C5C5C"
textcolor[10] ="666666"
textcolor[11] ="707070"
textcolor[12] ="7A7A7A"
textcolor[13] ="858585"
textcolor[14] ="8F8F8F"
textcolor[15] ="999999"
textcolor[16] ="A3A3A3"
textcolor[17] ="ADADAD"
textcolor[18] ="B8B8B8"
textcolor[19] ="C2C2C2"
textcolor[20] ="CCCCCC"
textcolor[21] ="D6D6D6"
textcolor[22] ="E0E0E0"
textcolor[23] ="EBEBEB"
textcolor[24] ="F5F5F5"
textcolor[25] ="FFFFFF"

Det skal dog også kunnes bruges mellem f.eks. blå og gul er det noget der lade sig gøre?


Der er gode point
Avatar billede nielle Nybegynder
28. august 2005 - 19:21 #1
F.eks. sådan her:

<script type='text/javascript'>
maxColorIdx = 25;

textcolor = new Array();
textcolor[0]          = "0000FF";  // Blå
textcolor[maxColorIdx] = "FFFF00";  // Gul

rStart = "0x" + textcolor[0].substr(0, 2);
gStart = "0x" + textcolor[0].substr(2, 2);
bStart = "0x" + textcolor[0].substr(4, 2);

rEnd = "0x" + textcolor[maxColorIdx].substr(0, 2);
gEnd = "0x" + textcolor[maxColorIdx].substr(2, 2);
bEnd = "0x" + textcolor[maxColorIdx].substr(4, 2);

for (i=1; i<maxColorIdx; i++)
{
    r = Math.round(((maxColorIdx-i) * parseInt(rStart) + i * parseInt(rEnd))/maxColorIdx);
    g = Math.round(((maxColorIdx-i) * parseInt(gStart) + i * parseInt(gEnd))/maxColorIdx);
    b = Math.round(((maxColorIdx-i) * parseInt(bStart) + i * parseInt(bEnd))/maxColorIdx);

    r = Dec2Hex(r);
    g = Dec2Hex(g);
    b = Dec2Hex(b);

    textcolor[i] = r + g + b;
}

function Dec2Hex(Dec)
{
    var hexChars = "0123456789ABCDEF";
    var a = Dec % 16;
    var b = (Dec - a)/16;
    hex = "" + hexChars.charAt(b) + hexChars.charAt(a);
    return hex;
}

for (i=0; i<=maxColorIdx; i++)
{
    showColor(textcolor[i]);
}

function showColor(color)
{
    document.write("<div style='background: " + color + "'>" + color + "</div>");
}
</script>
Avatar billede nielle Nybegynder
28. august 2005 - 19:32 #2
... eller en smule kønnere:

<script type='text/javascript'>
maxColorIdx = 25;

textcolor = new Array();
textcolor[0]          = "0000FF";  // Blå
textcolor[maxColorIdx] = "FFFF00";  // Gul

rStart = Hex2Dec(textcolor[0].substr(0, 2));
gStart = Hex2Dec(textcolor[0].substr(2, 2));
bStart = Hex2Dec(textcolor[0].substr(4, 2));

rEnd = Hex2Dec(textcolor[maxColorIdx].substr(0, 2));
gEnd = Hex2Dec(textcolor[maxColorIdx].substr(2, 2));
bEnd = Hex2Dec(textcolor[maxColorIdx].substr(4, 2));

for (i=1; i<maxColorIdx; i++)
{
    r = Math.round(((maxColorIdx-i)*rStart + i*rEnd)/maxColorIdx);
    g = Math.round(((maxColorIdx-i)*gStart + i*gEnd)/maxColorIdx);
    b = Math.round(((maxColorIdx-i)*bStart + i*bEnd)/maxColorIdx);

    r = Dec2Hex(r);
    g = Dec2Hex(g);
    b = Dec2Hex(b);

    textcolor[i] = r + g + b;
}

function Hex2Dec(Hex)
{
    return parseInt("0x" + Hex);
}

function Dec2Hex(Dec)
{
    var hexChars = "0123456789ABCDEF";
    var a = Dec % 16;
    var b = (Dec - a)/16;
    hex = "" + hexChars.charAt(b) + hexChars.charAt(a);
    return hex;
}

for (i=0; i<=maxColorIdx; i++)
{
    showColor(textcolor[i]);
}

function showColor(color)
{
    document.write("<div style='background: " + color + "'>" + color + "</div>");
}
</script>
Avatar billede jes-eu Nybegynder
28. august 2005 - 22:56 #3
Hi, det virker. Perfekt
Avatar billede nielle Nybegynder
28. august 2005 - 23:25 #4
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester