Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

140
Vistas
no se puede dibujar la curva de Bézier en el lienzo html

No puedo dibujar bezierCurveTo en el lienzo si el punto de inicio de moveTo y bezierCurveTo no es exactamente el mismo, es decir, 4 puntos decimales en moveTo y 6 puntos decimales en bezierCurveTo y lineWidth es más 1

 var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.beginPath(); ctx.lineWidth = "4" ctx.moveTo(33.7605,56.51376); ctx.bezierCurveTo(33.76049625,56.51376,117.53628,247.02303,742.75229,221.65138); ctx.stroke();
 <canvas id="myCanvas" width="800" height="800" style="border:1px solid #d3d3d3;">

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Ni siquiera necesita el ctx.moveTo . Además, ctx.lineWidth debe ser un número.

 var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.beginPath(); ctx.lineWidth = 4; ctx.bezierCurveTo(33.76049625,56.51376,117.53628,247.02303,742.75229,221.65138); ctx.stroke();
 <canvas id="myCanvas" width="800" height="800" style="border:1px solid #d3d3d3;">

about 4 years ago · Juan Pablo Isaza Denunciar

0

tipos de bézier

bezierCurveTo() agrega un bezier cúbico a la ruta. Un bezier cúbico tiene un punto inicial y final y dos puntos de control (un total de 4 puntos)

quadraticCurveTo() agrega un bezier cuadrático a la ruta. Un bezier cuadrático tiene un punto inicial y final y un punto de control (un total de 3 puntos)

Mantenga los puntos de control alejados de los puntos finales

El primer punto de ambos beziers es el último punto agregado a la ruta actual. Agregar un punto de control en los puntos de inicio o finalización causará problemas. Esto probablemente se deba al hecho de que la distancia entre el inicio o el final y el punto de control es cero y es imposible interpolar a lo largo de una línea de longitud cero.

Usando una curva cuadrática (3 puntos)

Como solo ha dado 3 puntos únicos, supongo que desea una curva cuadrática en lugar de cúbica.

Por lo tanto, puede cambiar el código de

 ctx.moveTo(33.7605,56.51376); // start point ctx.bezierCurveTo( 33.76049625, 56.51376, // control point 1 duplicated coordinate (too close) 117.53628, 247.02303, // control point 2 742.75229, 221.65138 // end point );

y usa quadraticCurveTo , como...

 ctx.moveTo(33.76049625, 56.51376); // start point ctx.quadraticCurveTo( 117.53628, 247.02303, // control point 1 742.75229, 221.65138 // end point );

Ejemplo

La curva roja es una cúbica con un punto de inicio indefinido. Por lo que puedo decir sin un punto de inicio, el comportamiento no está definido.

La curva negra es una cuadrática de las 3 coordenadas de su código.

 const ctx = myCanvas.getContext("2d"); ctx.lineWidth = 4; ctx.strokeStyle = "Red"; ctx.beginPath(); ctx.bezierCurveTo( 33.76049625, 56.51376, // control point 1 duplicated coordinate (too close) 117.53628, 247.02303, // control point 2 742.75229, 221.65138); // end point ctx.stroke(); ctx.strokeStyle = "Black"; ctx.beginPath(); ctx.moveTo(33.76049625, 56.51376); // start point ctx.quadraticCurveTo( 117.53628, 247.02303, // control point 1 742.75229, 221.65138); // end point ctx.stroke();
 <canvas id="myCanvas" width="800" height="800" style="border:1px solid #d3d3d3;">

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda