Canvas に画像が描画される Web サイトを作成しようとしています。その後、ユーザーはボタンを押して ctx.fill() の特定の部分に色を付けることができます。ctx.fill() で作成した最新のシェイプしか使用できないという問題が発生していますが、これは多くの場合、必要なシェイプではありません。
これが例です。このコード ( http://build.rivingtondesignhouse.com/piol/test/に住んでいます) では、最初の四角形を描画してから、それをスタックに save() してから、2 番目の四角形を描画しようとしています (そして、それを保存します)、その後、私の fill() 関数が呼び出されたときに、最初の四角形を restore() し、別のパターンで ctx.fill() したいと思います。うまくいきません!
実際には、この複雑な形状の灰色の部分を、画像が描画された後にユーザーが選択した色で塗りつぶそうとしていますが、手法は同じだと思います。(http://build.rivingtondesignhouse.com/piol/test/justTop.html)
助けてくれてありがとう!!!
コードは次のとおりです。
<script type="text/javascript">
var canvas;
var ctx;
function init() {
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
draw();
}
function draw() {
ctx.fillStyle = '#FA6900';
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.shadowBlur = 4;
ctx.shadowColor = 'rgba(204, 204, 204, 0.5)';
ctx.fillRect(0,0,15,150);
ctx.save();
ctx.fillStyle = '#E0E4CD';
ctx.shadowOffsetX = 10;
ctx.shadowOffsetY = 10;
ctx.shadowBlur = 4;
ctx.shadowColor = 'rgba(204, 204, 204, 0.5)';
ctx.fillRect(30,0,30,150);
}
function fill(){
var image = new Image();
image.src = "http://www.html5canvastutorials.com/demos/assets/wood-pattern.png";
image.onload = drawPattern;
function drawPattern() {
ctx.restore();
ctx.fillStyle = ctx.createPattern(image, "repeat");
ctx.fill();
}
}
init();