で
感謝。つまり、HTMLキャンバス内に「偶数」の塗りつぶしルールを使用します。
少しリサーチしてメーリングリストやパッチを調べたところ、FirefoxとChromeの両方の最新バージョンではこれがサポートされていましたが、ブラウザごとに異なる点がありました。
FirefoxではmozFillRule attributeを使用しています。例:Chromeの場合
//
// Firefox Example
//
// canv has the HTML canvas element
var ctx = canv.getContext("2d");
ctx.fillStyle = "#ff0000";
ctx.mozFillRule = 'evenodd';
ctx.beginPath();
ctx.moveTo(100, 10);
ctx.lineTo(40, 180);
ctx.lineTo(190, 60);
ctx.lineTo(10,60);
ctx.lineTo(160,180);
ctx.closePath();
ctx.fill();
、あなたはfill
メソッドにパラメータとして文字列EVENODDを渡すことによってそれを行います。例:
//
// Chrome Example
//
// canv has the HTML canvas element
var ctx = canv.getContext("2d");
ctx.fillStyle = "#ff0000";
ctx.beginPath();
ctx.moveTo(100, 10);
ctx.lineTo(40, 180);
ctx.lineTo(190, 60);
ctx.lineTo(10,60);
ctx.lineTo(160,180);
ctx.closePath();
ctx.fill('evenodd');
これは私が調査した2つのブラウザです。他のブラウザではこれがどのような状態かわかりません。あまりにも遠い未来に、fillRule
アトリビュートを使ってこの機能を使用できるようになりました。それは今やHTML standardの一部です。