Autor Zpráva
pmasarik
Profil
Nazdar
Mám stromovú štruktúru a rád by som ju zvýraznil farebne napr. od najtmavšej farby až po najbledšiu podla zanorenia.
Zanorenie sa ráta ako $level = 0; a potom $level++; takže mám čísla od 0 do ...
Chcel by som to urobiť nejako automaticky na nekonečno farieb, ale nenapadá ma ako docieliť generovanie napr. RGB postupne podla aktuálneho $level.

Toto je ručne generované ale je potrebné pre každý $level navolit farbu.
Nenapadá niekoho ako to urobiť automatické???

switch ($level) {
case 0:
$farba_menu = ' bgcolor="#53BFFF"';
break;
case 1:
$farba_menu = ' bgcolor="#71EB3C"';
break;
case 2:
$farba_menu = ' bgcolor="#A7F784"';
break;
case 3:
$farba_menu = ' bgcolor="#C4FAAD"';
break;
case 4:
$farba_menu = ' bgcolor="#DAFCCC"';
break;
case 5:
$farba_menu = ' bgcolor="#ECFDE4"';
break;
case 6:
$farba_menu = ' bgcolor="#F5FCF2"';
break;
}
Casero
Profil
co teřeba cyklem #000001 #000002 kterej by jel 999999x
Casero
Profil
pmasarik
nebo prostě takto while ($level<999999){
$počet+=20;
$barva[$počet]="#".$pocet;
;}
venca12
Profil
Jen mě tak napadlo, že:

Ten rgb zápis je HEX číslo, přitom nejtmavší je (00,00,00) a největlejší (FF,FF,FF) příčemž FF odpovídá hodnotě 255. Pokud by jsi tedy čistě teoreticky chtěl zvýrazňovat od nejčernější, do nejčervenější, musel by jsi použít barvy z rozsahu: (00,00,00) - (FF,00,00). Řešení je už tedy na snadě.

V proměnné $level máš uložený level zanoření (pro neomezený počet zanoření to zřejmě udělat nepůjde, jsi limitován počtem barev).

Kód:

// opatreni, proti nezadoucimu rozsahu cervene barvy
if(0<$level<255)
{
// prevedu to do hexa
$hexa = dechex($level);
// udelam barvu
$color = $hexa."0000";
}


Další řešení je myslím si už nasnadě.
pmasarik
Profil
Toto som všetko skúšal ale tie farebné skoky sú moc jemné a nevidno ich.
Ono tých zanorení v reále bude možno max 10, ale to popredu neviem.

re: $hexa = dechex($level);// z 1 to urobí 1 takže mi chýba jedna 0 do farby $color = $hexa."0000";
finc
Profil
A co třeba takto?


class ColorTree
{

/***************************** ATRIBUTY TRIDY *****************************/

private $jump;

private $start;

private $level;

/****************************** METODY TRIDY ******************************/


public function __construct($level)
{
$this->level = (!intval($level) ? 1 : intval($level));

$this->start = 100;

$this->jump = 5;
}

public function getColor()
{
$color = "";
$color .= $this->createHexColor();
return $color;
}

public function getRGBColor()
{
$color = ($this->level * $this->jump) + $this->start;
if ($color > 255) {
throw new Exception("Nedefinovaná barva");
}
return array($color, $color, $color);
}

public function getHTMLRGBColor()
{
$color = implode(", ", $this->getRGBColor());
return "rgb(". $color .")";
}

}

for ($i = 0; $i < 30; $i++) {
$col = new ColorTree($i);
echo "<p style='background-color: ". $col->getHTMLRGBColor() .";'>". str_repeat("&nbsp;", $i) ."uroven ". $i ."</p>\n";
}
finc
Profil
Psal jsem to narychlo, takže jsou tam menší chybky. Jinak pro vrácení barev najde přes google dost témat. Stačí jen hledat.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0