Ich versuche, ein Raster auf einem HTML5-Zeichenbereich zu rendern, aber ich möchte, dass alles, was der Benutzer auf der Zeichenfläche zeichnet, hinter dem Raster platziert wird. Ich habe versucht, dies neu zu erstellen, indem ich 2 Canvas habe: eins mit dem Raster und das andere das, auf dem der Benutzer zeichnet. Der Bereich mit dem Raster befindet sich oben auf dem Zeichenbereich, auf dem der Benutzer zeichnet, und der Zeichenbereich sollte transparent sein, aber es zeigt nichts, was der Benutzer zeichnet. Wenn ich die Leinwand, die der Benutzer oben anzieht, platziere, kann ich sehen, was der Benutzer zeichnet, aber die Zeichnung befindet sich vor dem Raster, und ich möchte die Zeichnung hinter dem Raster sehen.Raster auf HTML5-Canvas rendern
können Sie sehen, was ich hier versucht: http://codepen.io/vishiswoz/pen/grqMyG
function buildGrids(gridPixelSize, color, gap, div) {
var canvas = $('#' + div + '').get(0);
var ctx = canvas.getContext("2d");
//ctx.fillStyle="rgba(255, 255, 255, 0)";
//ctx.fillRect(0, 0, 500, 300);
ctx.lineWidth = 0.5;
ctx.strokeStyle = color;
// horizontal grid lines
for (var i = 0; i <= canvas.height; i = i + gridPixelSize) {
ctx.beginPath();
ctx.moveTo(0, i);
ctx.lineTo(canvas.width, i);
if (i % parseInt(gap) == 0) {
ctx.lineWidth = 0.5;
} else {
ctx.lineWidth = 0.5;
}
ctx.closePath();
ctx.stroke();
}
// vertical grid lines
for (var j = 0; j <= canvas.width; j = j + gridPixelSize) {
ctx.beginPath();
ctx.moveTo(j, 0);
ctx.lineTo(j, canvas.height);
if (j % parseInt(gap) == 0) {
ctx.lineWidth = 0.5;
} else {
ctx.lineWidth = 0.5;
}
ctx.closePath();
ctx.stroke();
}
for(var ii = 0; ii <=canvas.width; ii+=2) {
for(var jj=0; jj <=canvas.height; jj+=2) {
ctx.clearRect(ii,jj,1,1);
}
}
}
buildGrids(5, "grey", 2, "test");
var el = document.getElementById('c');
var ctx = el.getContext('2d');
ctx.strokeStyle = "black";
var isDrawing;
el.onmousedown = function(e) {
isDrawing = true;
ctx.lineWidth = 10;
ctx.lineJoin = ctx.lineCap = 'round';
ctx.moveTo(e.clientX, e.clientY);
};
el.onmousemove = function(e) {
if (isDrawing) {
ctx.lineTo(e.clientX, e.clientY);
ctx.stroke();
}
};
el.onmouseup = function() {
isDrawing = false;
};
canvas {
position: absolute;
top: 0;
left: 0;
}
#c {
}
<canvas id="c" width="500" height="300"></canvas>
<canvas id="test" width="500" height="300"></canvas>
Vielen Dank im Voraus.
Dank! Dieser Code funktioniert großartig. –