「tmlib.js 怒濤の 100 サンプル!!」を試す その50

半分まで来ましたよ!その50。

tmlib.js 怒濤の 100 サンプル!! – Graphics(HTML5 Canvas) 編

今回試すサンプルは「透明度・合成」の「合成タイプを設定しよう(source-out)」です。
ではサンプルが掲載されているのでまずは見てみましょう。
中央のボタンを押してみて下さい。
欠けた青の円が描画されたと思います。

/*
* 定数
*/
var SCREEN_WIDTH = 465;
var SCREEN_HEIGHT= 465;
tm.main(function() {
// canvas インスタンス生成
var canvas = tm.graphics.Canvas("#world");

// 幅, 高さを指定
canvas.resize(SCREEN_WIDTH, SCREEN_HEIGHT);
// 画面にフィットさせる
canvas.fitWindow();

// 円を描画
canvas.fillStyle = "rgb(255, 0, 0)";
canvas.fillCircle(230, 150, 100);

// グローバルαを指定
canvas.globalCompositeOperation = "source-out";

// 円を描画
canvas.fillStyle = "rgb(0, 255, 0)";
canvas.fillCircle(180, 250, 100);
canvas.fillStyle = "rgb(0, 0, 255)";
canvas.fillCircle(280, 250, 100);

// 補助線
canvas.globalCompositeOperation = "source-over";
canvas.strokeStyle = "#aaa";
canvas.strokeCircle(230, 150, 100);
canvas.strokeCircle(180, 250, 100);
canvas.strokeCircle(280, 250, 100);
};

今回も勉強するのは20行目になります。
合成タイプを指示しているプロパティです。
その48で詳しく説明していますので確認してみてください。

20行目

canvas.globalCompositeOperation = "source-out";

合成タイプとして「 source-out 」が指定されています。
指定前の図形と指定後の図形が重なっていない部分が表示される合成タイプです。

23~26行目

それぞれの円のスタイル(色)と円を描画しています。
20行目で指定した合成タイプで表示されているのが確認できます。

ですがサンプルだとちょっとわかりづらいですね。
jsdo.itでは難しかったので画像を作ってみました。

この合成タイプも「 重なり順 」は通常通りなので後から描画されたものが上となります。
サンプルだと重なった部分は見えないのであまり関係ないかもしれませんが念のために。

29~33行目

補助線を描画しています。
どこが表示されているか表示されていないかハッキリわかりますね。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です