背景やシェイプに色をつける 背景やシェイプに色をつける

背景やシェイプの色を変えてみましょう。

startshape colorCircle

background { b -1 }

rule colorCircle {
    CIRCLE { b 1 }
}
black

backgroundで背景の設定ができます。 “b -1”の“b”は、明るさ(briteness)を表し、続く数値で調整します。 値は-1から1までの範囲です。 この例では、明るさを-1にしているので、背景色は黒になります。

startshape colorCircle

background { a -1 }

rule colorCircle {
    CIRCLE { b 1 }
}
alpha

a -1”の“a”は、アルファチャンネル(Alpha Channel)を表し、続く数値で調整します。 値は-1から1までの範囲です。 この例では、アルファチャンネルを-1にしているので、背景は透明になります。 背景が透明なイメージは画像処理ソフトウェアで加工するときに重宝します。

背景を有彩色で色づけすることもできます。 方法は後述するシェイプの色づけと同じですので、ここでの説明は割愛します(たいていの場合、背景色はここまでに紹介した白、黒、透明で間に合います)。

Context FreeはHSBA色空間によって色彩を制御しています。 Hは色相(Hue)、Sは彩度(Saturation)、Bは明度(Brightness)、Aはアルファチャンネル(Alpha Channel)の頭文字です。 Context Freeでは、それぞれ“h”または“hue”、“sat”または“saturation”、“b”または“brightness”、“a”または“alpha”と数値で設定します。 これらを組み合わせて、さまざまな発色を得ることができます。

では、シェイプに色づけしてみましょう。

startshape colorCircle

background { b -1 }

rule colorCircle {
    SQUARE { s 5.5 1 b 1 x 2.25 y 0.5 }
    CIRCLE { h 0 sat 1 b 1 }
    CIRCLE { h 0 sat 0.5 b 1 x 1.5 }
    CIRCLE { h 0 sat 1 b 0.5 x 3 }
    CIRCLE { h 0 sat 1 b 1 a -0.5 x 4.5 }
}
color 1

白い長方形の上に半分重ねて、4つの円を描きました。 4つとも色相(h)は0(赤)です。 最初の円は彩度(sat)と明度(b)が1になっているので、赤になります。 2つ目は、明度は1ですが彩度が0.5ですので発色が抑えられて、ピンクがかった色になります。 3つ目は、彩度は1ですが明度が0.5ですので、暗い赤(茶色)になります。 4つ目は、彩度も明度も1ですが、アルファチャンネル(a)が0.5ですので半透明となり、円の赤と下の色がブレンドされます。

色情報も、位置の移動や回転などと同じように変化させることができます。

startshape colorCircles

background { b -1 }

rule colorCircles {
    20 * { h 18 x 1.5 } CIRCLE { sat 1 b 1 }
    20 * { b 0.1 x 1.5 } CIRCLE { h 0 sat 1 y -1.5 }
    20 * { sat 0.1 x 1.5 } CIRCLE { h 0 b 1 y -3 }
    20 * { a -0.1 x 1.5 } CIRCLE { h 0 sat 1 b 1 y -4.5 }
}
color 2

1行目の円は、色相を18ずつ加算して色を変化させています。 2行目の円は、明度を徐々に上げて、だんだんと明るい赤にしています。 3行目の円は、彩度を徐々に上げて、白から赤にしています。 4行目の円は、アルファ値を徐々に下げて半透明から透明にしています(暗くなっているのは背景の黒が透けているからです。白背景で実行するとだんだん白くなります)。

できるようになった(はずの)こと
  1. 背景色を変えて描画できる
  2. シェイプの色相を変えて描画できる
  3. シェイプの彩度を変えて描画できる
  4. シェイプの明度を変えて描画できる
  5. シェイプのアルファチャンネルを変えて描画できる