El método arcTo

facebook-svg gplus-svg twitter-svg

En el <canvas> podemos crear esquinas redondeadas utilizando el método arcTo(). La mala noticia es que Opera no soporta el método arcTo().

  JavaScript Descripción Defecto
lineWidth context.lineWidth = numero; Determina (sets) o devuelve (returns) la grosor de la línea. 1
strokeStyle context.strokeStyle = color | gradient | pattern; Determina (sets) o devuelve (returns) el color, gradiente o patrón de la línea. negro
beginPath() context.beginPath(); Empezamos a dibujar  
arcTo() context.arcTo(x1,y1,x2,y2,r); Crea un arco de círculo entre dos tangentes x1, y1 y x2, y2  
stroke() context.stroke(); Dibuja una línea ya definida.  

Vea la chuleta con las propiedades y metodos() de canvas.

arcTo

La propiedad arcTo()

La propiedad arcTo() crea un arco entre dos tangentes. Los parámetros utilizados son:

  • x1, y1 las coordenadas x e y del primer punto de control.
  • x2, y2 las coordenadas x e y del primer segundo de control.
  • r representa el radio de la curvatura.

Empezamos a dibujar en el punto cuyas coordenadas son: x0, y0.
La primera tangente va del punto (x0, y0) al punto (x1, y1).
La segunda tangente va del punto (x1, y1) al punto (x2, y2).


Esquinas redondeadas con arcTo

Su navegador no soporta canvas :( 

	var canvas = document.getElementById("arcos");
		if (canvas && canvas.getContext) {
		var ctx = canvas.getContext("2d");
			if (ctx) {
				   // define el rádio
						 var r = 20;
						 // las coordenadas del rectángulo;
							var x0 = 50, y0 = 50;
							var x1 = 200, y1 = 50;
							var x2 = 200, y2 = 150;
							var x3 = 50, y3 = 150;
							
							ctx.lineWidth = 8;
							ctx.strokeStyle = "orange";
							ctx.beginPath();
							ctx.moveTo(x3,y3-r);
							// dibuja un rectángulo con esquinas redondeadas
							ctx.arcTo(x0,y0,x1,y1,r);
							ctx.arcTo(x1,y1,x2,y2,r);
							ctx.arcTo(x2,y2,x3,y3,r);
							ctx.arcTo(x3,y3,x0,y0,r);
							ctx.stroke(); 
			}
		}
Su navegador no soporta canvas :(

Para entender mejor lo que pasa:

Su navegador no soporta canvas :(