ColorPicer

Kann mir die Seite grade nicht angucken (wegen Problemen am Klinik Gateway), aber wo liegt denn prinzipiell dein Problem ?

Wie du die Liste beliebig groß machst ?
Wie du die Felder farbig machst ?
Wie du nach x Feldern eine neue Reihe anfängst ?

Da musst du schon konkreter Fragen, weil ein fertiges Script wird dir hier eh keiner vor deiner Nase entwickeln :-D
 
Also mein problem ist es die Farben zu generieren.
Ich möchte eine Farb-Tabelle machen in der z.b. 20 verschiedene Farben enthalten sind, die ich aber nicht alle von selber per hand in HTML eindaddeln will.
 
Wenn du die Farben nicht in im HEX Format irgendwo hinterlegen willst, wie soll dann irgendein PHP Script genau die 20 Farben aus 16777215 möglichen finden, die du gerne hättest ?

Irgendwo musst du schon festlegen, welche Farben in dem ColorPicker zu sehen sein sollen.
 
Grundsätzlich kannst du, wenn du drei Zahlenwerte hast diese in einen Hexwer umwandeln:
PHP:
function makeColor( $r, $g, $b )
{
	$retval = "";
    $hex = "0123456789ABCDEF";
    $retval .= $hex{floor($r / 16)};
    $retval .= $hex{$r % 16};
    $retval .= $hex{floor($g / 16)};
    $retval .= $hex{$g % 16};
    $retval .= $hex{floor($b / 16)};
    $retval .= $hex{$b % 16};

    return $retval;
}
Man kann jetzt auch mit ner For-schleifen z.B. alle reinen Rottöne anzzeigen lassen:
PHP:
for ($i=0; $i<=255; $i++) {
    echo makeColor($i, 0, 0)."<br>\n";
}
 

Anhänge

mhh cool.

Also gehen wir z.b. mal von der "Standard Windows Farbtabelle" aus, die man fast in jedem Programm finden kann wenn man Farben auswählt.

Sowas in der art möchte ich generieren.
 
Dann benutz doch die funktion von Nuinmundo und erhöh $i nicht um 1 sondern z.B. um 17, dann bekommst du 15 verschiedene Rottöne (in dem angegebenen Fall)

PHP:
for ($i=0; $i<=255; $i+17) {
    echo makeColor($i, 0, 0)."<br>\n";
}

Die Werte speicherst du z.B. in ein array (nennen wir es meinetwegen $rot) und das kannst du dann mit den anderen Farben genauso machen, z.B.

PHP:
for ($i=0; $i<=255; $i+17) {
    echo makeColor($i, $i, $i)."<br>\n";
}

Natürlich kannst du auch mehrere Variablen verschieden erhöhen, jenachdem, was du für Farben haben willst...

Beim ausgeben in der Tabelle lässt du dann z.B. die Werte aus dem array $rot in der obersten Zeile ausgeben und in der zweiten Zeile das nächste Array so hast du dann pro Zeile 15 Spalten mit verschiedenen Tönen einer Farbe.
 
Du kannst auch einfach ein Bild machen, dann bei einem klick darauf die Koordinaten, auf die geklickt wurden (sind automatisch belegt, einfach mal suchen) ermittel und die dortige Frabe mit imagecolorat auslesen.
 
Ich hab mal einen Picker in JS gebaut. Hier ein Snippet, dass die 216 Webfarben darstellt:
Code:
             function DecToHex(dec){
               dec = Math.abs(dec);
               var hex = "";
               var a = "" + dec;
               a = a.length;
               var h = "0123456789ABCDEF";
               for (n=0; n<a; n++){
                  he = h.charAt(dec-Math.floor(dec/16)*16);
                  dec = (dec - h.indexOf(he)) / 16;
                  hex = he + hex;
               }
               if (hex.charAt(0) == "0" && hex.length > 2) hex = hex.substring(1,hex.length);
               if(hex == "" || hex == "0") hex = "00";
               return hex;
             }

    var red=0; var green=0; var blue=0;
     var toadd = 51; var tmp = "";
     f=0;
     for(j = 0; j <= 5; j++) {
        red=j*toadd;
        tmp += '<tr>';
        for(a = 0; a <= 5; a++) {
            green = a*toadd;
            for(i = 0; i <= 5; i++) {
              blue= i*toadd;
              tmp += '<td bgcolor="#'+DecToHex(red)+DecToHex(green)+DecToHex(blue)+'"><a href="javascript:void(0);" style="cursor:crosshair" onclick="setcolor(window.document.forms[1],\'' +red+ ',' +green+ ',' +blue+ '\',\'' +DecToHex(red)+DecToHex(green)+DecToHex(blue)+ '\');" onmouseover="_editbackground(\'#'+DecToHex(red)+DecToHex(green)+DecToHex(blue)+'\');" onmouseout="_editbackground();"><img src="images/null.gif" width="10" height="10" border="0"></a></td>';
              f++;
            }
        }
        tmp +='</tr>';
     }
Gruss
Jan
 
Zurück