Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

[Duda] respecto al posicionamiento y las lineas.

En el ejercicio al crear un triangulo comprendo que posicionamos el pincel en medio con las cordenadas 300,200, pero solamente indicamos que haga una linea en las cordenas usando line.To 200,400 y 400,400 finalizando con fill para rellenar el color del triangulo.

Mi duda es, ¿cómo determina el programa que se forme un triangulo, si no hemos definido una última linea de la cordenada 300,200 para completar la figura?

<canvas width="600" height="400"> </canvas>

<script>
    var pantalla = document.querySelector("canvas");
    var pincel = pantalla.getContext("2d");

    pincel.fillStyle = "green"//propiedad-caracteristica
    pincel.fillRect(0,0,200,400); //funcion

    pincel.fillStyle = "lightgrey"//propiedad-caracteristica
    pincel.fillRect(200,0,400,400); //funcion

    pincel.fillStyle = "red"//propiedad-caracteristica
    pincel.fillRect(400,0,600,400); //funcion

    pincel.fillStyle = "yellow";
    pincel.beginPath();
    pincel.moveTo(300,200);
    pincel.lineTo(200,400);
    pincel.lineTo(400,400);
    pincel.fill();

</script>

Cualquier respuesta se agradece.

3 respuestas

pincel.moveTo(300,200); en esta linea solo se mueve las coordenadas 300,200

pincel.lineTo(200,400); y estas son las coordenas que formaran las lineas del triangulo pincel.lineTo(400,400);

al menos así o entiendo, no se si con esto se resuelve tu duda

solución!

Que tal @Alumno, no he encontrado la referencia exacta, pero supongo que como se estan determinando los tres puntos del triangulo y se está usando el método .fill(), es por eso que no se necesita "dibujar" la tercera línea

pincel.moveTo(300, 200) // Primer punto > (x1, y1) = (300, 200)
pincel.lineTo(200, 400) // Segundo punto > (x2, y2) = (200, 400) ==> Se "dibuja" una línea, pero no se ve porque no se le ha definido un "stroke"
pincel.lineTo(400, 400) // Tercer punto > (x3, y3) = (400, 400) ==> Se "dibuja" una línea, pero no se ve porque no se le ha definido un "stroke"

Se observa que sólo se han "dibujado" únicamente dos líneas, pero probablemente dentro del contexto de canvas, el método .fill() rellena lo que esté delimitado por al menos dos puntos sin la necesidad de "cerrar" la figura en cuestión, esto se puede ver si se intenta dibujar otra figura, como un pentágono, por ejemplo:

    pincel.fillStyle = "steelblue"
    pincel.beginPath()
    pincel.moveTo(300, 120)
    pincel.lineTo(220, 190)
    pincel.lineTo(250, 280)
    pincel.lineTo(350, 280)
    pincel.lineTo(350, 280)
    pincel.lineTo(380, 190)
    pincel.fill()

Si en el ejercicio original, quitas(o comentas) pincel.fill() y en su lugar pones pincel.stroke(), verás como sólo se observaran las dos líneas que se dibujaron realmente, en caso de querer tener el contorno completo de la figura, será necesario "dibujar" la linea faltante, en el ejemplo del triángulo sería: pincel.moveTo(300, 200) para "cerrar" la figura... Espero haberme dado a entender... Saludos!!!

Muchas gracias por sus respuestas, recién estoy leyéndolo y está claro ahora, fill trabaja de una forma distinta a stroke. ^^ Lo tendré anotado y en cuenta la próxima vez.