Parece extraño, pero no obstante HTML5 admite líneas de dibujo, círculos, rectángulos y muchas otras formas básicas, no tiene nada adecuado para dibujar el punto básico. La única forma de hacerlo es simulando el punto con lo que tenga.
Básicamente, hay 3 soluciones posibles:
- dibujar punto como una línea
- dibujar punto como un polígono
- dibujar punto como un círculo
Cada uno de ellos tiene sus inconvenientes.
Línea
function point(x, y, canvas){
canvas.beginPath();
canvas.moveTo(x, y);
canvas.lineTo(x+1, y+1);
canvas.stroke();
}
Tenga en cuenta que estamos dibujando en dirección sureste, y si este es el borde, puede haber un problema. Pero también puedes dibujar en cualquier otra dirección.
Rectángulo
function point(x, y, canvas){
canvas.strokeRect(x,y,1,1);
}
o de una manera más rápida usando fillRect porque el motor de renderizado solo llenará un píxel.
function point(x, y, canvas){
canvas.fillRect(x,y,1,1);
}
Circulo
Uno de los problemas con los círculos es que es más difícil que un motor los procese
function point(x, y, canvas){
canvas.beginPath();
canvas.arc(x, y, 1, 0, 2 * Math.PI, true);
canvas.stroke();
}
la misma idea que con el rectángulo que puedes lograr con el relleno.
function point(x, y, canvas){
canvas.beginPath();
canvas.arc(x, y, 1, 0, 2 * Math.PI, true);
canvas.fill();
}
Problemas con todas estas soluciones:
- Es difícil hacer un seguimiento de todos los puntos que va a dibujar.
- cuando acercas, se ve feo.
Si se pregunta "¿Cuál es la mejor manera de dibujar un punto? ", Iría con un rectángulo lleno. Puedes ver mi jsperf aquí con pruebas de comparación .