Esta situación es difícil de explicar, así que vamos a ilustrar con una imagen: ¿Por qué lineTo() cambia los píxeles interiores?
los píxeles dentro de la primera forma creada se aclaran. La pantalla se borra con negro, se dibujan los cuadros rojo y verde, luego se dibuja la ruta. La única solución que he encontrado hasta ahora fue establecer el ancho de línea de los cuadros a 2 píxeles, por los motivos descritos here.
Aquí está el código que se utiliza para dibujar las plazas:
sctx.save();
sctx.strokeStyle = this.color;
sctx.lineWidth = this.width;
sctx.beginPath();
sctx.moveTo(this.points[0].x, this.points[0].y);
for (var i = 1; i < this.points.length; i++)
{
sctx.lineTo(this.points[i].x, this.points[i].y);
}
sctx.closePath();
sctx.stroke();
sctx.restore();
y las líneas:
sctx.save();
sctx.strokeStyle = 'orange';
sctx.lineWidth = 5;
console.log(sctx);
sctx.beginPath();
sctx.moveTo(this.points[0].x, this.points[0].y);
for (var i = 1; i < this.points.length; i++)
{
sctx.lineTo(this.points[i].x, this.points[i].y);
}
sctx.closePath();
sctx.stroke();
sctx.restore();
y una imagen de la misma situación en la que las cajas se extraen al ancho de 2 píxeles:
¿Está lineTo()
jugando con los valores alfa? Cualquier ayuda es muy apreciada.
EDITAR: Para aclarar, ocurre lo mismo cuando se omite sctx.closePath();
en la ruta que se está dibujando.
¿Hay alguna posibilidad de que arroje un jsfiddle? – jcolebrand
Posiblemente, si realmente tengo que hacerlo. Estoy usando una biblioteca bastante grande (de mi propia creación): https://github.com/Bloodyaugust/SugarLab, así que tendría que reducir mucho de eso para que sea útil. – Bloodyaugust
Diría que su análisis es correcto, las cajas se dibujan con una opacidad reducida y al dibujar la forma de arriba está restableciendo esas cajas "dentro" de la forma a la opacidad total. Me temo que no sé lo suficiente sobre las tecnologías involucradas para especular por qué. –