Ich versuche, eine Leinwand mit der Maus zu zeichnen. Meine Anwendung funktioniert gut in Firefox, aber ich kann nicht erreichen, dass es in Chrom funktioniert. Mein Code ist wie folgt:Zeichnung in Leinwand mit Maus in Chrom
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
scaleX = canvas.width/rect.width, /*relationship bitmap vs. element for X*/
scaleY = canvas.height/rect.height; /*relationship bitmap vs. element for Y*/
return {
x: Math.round((evt.clientX - rect.left)*scaleX),
y: Math.round((evt.clientY - rect.top)*scaleY)
};
}
In dem obigen Code ich die Mauskoordinaten erhalten, für eine Leinwand in einem div enthalten namens „Lienzo“. Die CSS für die Leinwand und die lienzo ist wie folgt:
canvas {
image-rendering: -moz-crisp-edges; /* Firefox */
image-rendering: pixelated; /* Chrome */
position:absolute;
width:100%;
height:auto;
background:white;
box-shadow: 0 0 10px black;
}
#lienzo {
position:relative;
margin-left:1em;
width:80%;
}
Ich habe nach einer Lösung zu suchen versucht, aber ich kann nicht, weil ich verstehe nicht wirklich, was falsch ist.
Der Code, den ich benutze, um mit der Maus zu malen, besteht in einem Array, wo ich die Koordinaten verschiebe und wenn ich die Maus loslasse, druckt es alle Koordinaten, die im Array enthalten sind. Hier ist ein Fragment des Codes:
this.mostrarForma= function(){
for(var i=0; i < lista_de_puntos.length; i++)
{
ctx.strokeStyle=color;
ctx.lineJoin=tipo;
ctx.lineWidth=grosor;
ctx.beginPath();
//If i am at the begining of the array
if(lista_de_puntos[i][2] && i){
//Entramos aqui si pulsamos y arrastramos
ctx.moveTo(lista_de_puntos[i-1][0], lista_de_puntos[i-1][1]);
}else{
//If I press and I release the button
ctx.moveTo(lista_de_puntos[i][0], lista_de_puntos[i][1]);
}
ctx.lineTo(lista_de_puntos[i][0], lista_de_puntos[i][1]);
ctx.closePath();
ctx.stroke();
}
}
lege ich eine Geige Link, um es deutlicher: https://jsfiddle.net/ciberlook/rhwcbwwL/18/ Jede Hilfe ??
Können Sie ein Schnipsel oder eine Geige mit dem gesamten Code erstellen, der in Firefox funktioniert? Ich versuche, das zusammenzusetzen, was Sie haben, damit ich helfen kann, aber ich weiß nicht, in welchem Bereich 'this.mostarForma' sich befindet oder was das Mausereignis ist, das Sie verwenden. – zfrisch
ok, tut mir leid für die Verzögerung, aber ich wusste nicht, wie ich die Geige rauskriege, also brauchte ich eine Weile. Daher habe ich das Beispiel in Geige beigefügt, damit Sie eine bessere Vorstellung davon haben können, was passiert. Hier ist es: https://jsfiddle.net/ciberlook/rhwcbwwL/18/ – galeonweb