2010年1月4日月曜日

RGBの色相をテーブル表示

RGBの色相階調を16進数表記させながらテーブルで表示させるプログラムを書いてみました。

最初、<td>のbgcolorの値に、”#F00”といった三桁の省略形で書いていたので、黒い背景になってしまい、しばし悩みました。6桁でちゃんと書かないといけないのですね。(ですので、画像にある3ケタ表示は簡略表示しているだけですのであしからず。)

なんか、簡単なプログラムでとても美しいものになったので、ちょっと嬉しくなって投稿してみました。
初心者なコードで笑われるかもしれませんが、一応コードもアップしておきます。

自己ログも兼ねまして。。

<?php

function deg2sixteen($deg){//10~15までをa~fに変換
    switch($deg){
        case 10:$deg="a";break;
        case 11:$deg="b";break;
        case 12:$deg="c";break;
        case 13:$deg="d";break;
        case 14:$deg="e";break;
        case 15:$deg="f";break;
    }//i switch end
    return $deg;
}
for($n=0;$n<3;$n++){//RGBそれぞれに色ずつのテーブルをつくるループ
switch($n){
    case 0:echo"赤Rと緑Gの混色図";break;
    case 1:echo"緑Gと青Bの混色図";break;
    case 2:echo"赤Rと青Bの混色図";break;
}

echo "<table border='0' cellspacing='0'>";
echo "<tr>";
for($i=0;$i<16;$i++){//第一のカラーを0~15まで推移させる。
    $ic=$i;
    $ic=deg2sixteen($ic);
    echo"<tr>";
    for($j=0;$j<16;$j++){//第二のカラーを0~15まで推移させる。
        $jc=$j;
        $jc=deg2sixteen($jc);
        $ic2=$ic.$ic;$jc2=$jc.$jc;$zero="00";//ここで二ケタに変換
switch($n){//ここでRGBから二色を選ぶ振り分け。
    case 0:echo"<td bgcolor='#".$ic2.$jc2.$zero."'>#".$ic.$jc."0</td>";break;
    case 1:echo"<td bgcolor='#".$zero.$ic2.$jc2."'>#0".$ic.$jc."</td>";break;
    case 2:echo"<td bgcolor='#".$ic2.$zero.$jc2."'>#".$ic."0".$jc."</td>";break;
    }//$n switch end
    }//j for end
    echo"</tr>";
}//i for end
echo"</table><br>";
}//for n end

?> 

■追記:deg2sixteen()という自前の関数を作って、
10~15までの数字をa~fまでの英字に返還させるようにしたのですが、
Fatal error: Can't redeclare already declared function
のエラーが最初出て困りました。
要するに関数を複数回宣言している、ということなので考えてみたら、
for文の中で宣言していました。。(^^;
for文の外で宣言してやると、無事いけました。

ああ、初心者(笑)

0 件のコメント:

コメントを投稿