色の付け方

RGB

まず初めにRGBについて説明します。
コンピュータで色を表現するときには、光の三原色である赤(R, red)、緑(G, green)、青(B, blue) それぞれをどれくらい表示するか0から255の間で指定します。
例えば真っ白では(255,255,255)となり、真っ赤では(255,0,0)、紫では(255,0,255)などとなります。
赤、緑、青の順番で数値を指定します。

RGBにはもう一つ表現方法があります。CSSとかだとこちらの表現方法の方が一般的です。
三原色それぞれの値を0から255の10進数で表しましたが、16進数で表す方法です。
16進数とは、0から始まって15までを一桁で表す方法です。 15を使ってしまうとすでに二桁になっているので、9の次は英字のAを使います。0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fが16進数での数字です。
3は3ですが、11はB、14はEとなり、21(16+5)は15、27(16+11)は1Bとなります。
16進数を使う場合は先頭に#を付けて、カンマで区切らずくっつけます。
真っ白は#FFFFFF、真っ赤は#FF0000、紫だと#FF00FFとなります。
慣れないとなかなか難しいですが、両方使えると便利です。もちろん、0から255の値を使う方法だけでも問題ありません。
色を調べるのにこんなツールを作ってみました。いろんな色を見て16進数に慣れてください。

塗りつぶす関数fill

RGBについて分かったところで、最初はfillについて学びましょう。
すでに何回か出てきていますが、fillは四角形や円の内部を塗りつぶす関数です。
グレースケール(白から黒)であれば、fillには0(真っ黒)から255(真っ白)の値を渡します。


var w = 300;
var h = 400;
function setup() {
  createCanvas(w, h);
  background(0);
}

function draw() {
  noLoop();

  fill(255);
  rect(50, 50, 50, 150);

  fill(200);
  rect(150, 50, 50, 150);

  fill(100);
  ellipse(75, 300, 50);
  
  fill(50);
  ellipse(175, 300, 50);
}
            

カラーであれば、RGB値を渡せばよいのですが、そのまま渡すのではなく、color関数にRGB値を一旦渡してからcolor関数の返り値をfillに 渡すようにします。


var w = 300;
var h = 400;
function setup() {
  createCanvas(w, h);
  background(0);
}

function draw() {
  noLoop();
  var c;

  c = color(255, 0, 0)//赤
  fill(c);
  rect(50, 50, 50, 150);

  c = color(255, 0, 255)//紫
  fill(c);
  rect(150, 50, 50, 150);

  c = color("#00FF00"); //緑
  fill(c);
  ellipse(75, 300, 50);
  
  c = color("#E6E600");  //黄色
  fill(c);
  ellipse(175, 300, 50);
}
            

16進数表示の場合はダブルクオーテーションで囲む必要があります。
また、背景を塗りつぶすbackground関数もfillと同じ指定で色を付けることができます。

線を色付ける関数stroke

続いて線(四角形や円の淵も線に含まれます。)に色を付けるstroke関数ですが、fillと全く同じです。
基本的には10進数または16進数のRGB値またはグレースケールを指定すればよいです。
ここで、あと二つ色の指定方法を紹介します。
まず、真っ赤や真っ白など名前の付いた特定の色に関しては、その名前で指定することが可能です。
もう一つは、10進数のRGB値でもcolor関数を使わない方法です。次の例で具体的に見ていきましょう。もちろんfillでもこれらの指定は有効です。


var w = 300;
var h = 400;
function setup() {
  createCanvas(w, h);
  background(0);
}

function draw() {
  noLoop();
  var c;

  fill("red");
  rect(50, 50, 50, 150);

  fill("white");
  rect(150, 50, 50, 150);

  fill('rgb(0,255,0)'); //緑
  ellipse(75, 300, 50);
  
  fill('rgb(0%,50%,50%)'); //青みどり
  ellipse(175, 300, 50);
}
            

rgb()とありますが、これは関数ではなく、rgb値であることの合図みたいなものです。 fill関数の中で文字列を解析して色を設定してくれます。
0から255の値を指定する3番目の方法はわかりやすいと思いますが、4番目の方法はそれぞれの色を何%で表示するか指定する方法です。
50%と指定するのは255の半分ですから127.5を指定したことになります。

アルファ値

最後にアルファ値について学びましょう。 アルファ値とは、色を塗る際の透過度(透け具合)です。
これまでは色をべた塗してきましたが、実は半透明な状態の色を塗ることもできるのです。
アルファ値はrgba(r,g,b,α)のフォーマットあるいは、fill,stroke関数の第二引数に渡すことで指定できます。


var w = 300;
var h = 400;
function setup() {
  createCanvas(w, h);
  background("white");
}

function draw() {
  noLoop();
  noStroke();

  fill("red");
  rect(50, 50, 250, 350);

  fill(0, 125);    //fillの第二引数にアルファ値を渡す
  rect(150, 150, 50, 150);

  fill('rgba(0,255,0,0.25)'); //rgbaフォーマット
  ellipse(200, 300, 100);
  
  fill('rgba(0%,50%,50%, 0.5)');
  ellipse(150, 300, 50);
}
            

fill・strokeの第二引数にアルファ値を渡す場合は0から255の間を指定し、rgbaのフォーマットの場合は0から1の値を渡すことに注意です。 いずれも数の大きい方(255,1)がべた塗に近く、小さくなるほど透けていきます。
実際に作品を作っていく際は、色の指定がいろいろな方法だと頭が混乱してしまうので、色の指定はお好みの方法で統一することをお勧めします。

まとめ

  • 色はRGB値で指定する
  • fill・strokeの第一引数にはグレースケールの値またはcolor関数の返り値を渡す
  • rgbaフォーマットでアルファ値を指定できる
  • fill・strokeの第二引数にはアルファ値を渡すことができる

Prev Next