欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

canvas中手动绘制椭圆的方法

程序员文章站 2022-03-31 19:52:34
...

canvas中手动绘制椭圆的方法

讲解:canvas手动绘制椭圆是通过两点进行绘制,相当于绘制一个矩形,然后它的内切椭圆(已知起点和终 点)。假设起点为(bx,by)终点为(ex,ey)
(1)椭圆半轴(下面会用到此参数):

var axisx = Math.abs((ex- bx)/2);  //半轴是自然数,所以加了绝对值    				
var axisy = Math.abs((ey-by)/2);

(2)椭圆中心点(下面会用到此参数):

var centerx = axisx+Math.min(bx,ex);     				  
var centery = axisy+Math.min(by,ey);

具体方法
1.canvas自带的绘制椭圆方法:ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)参数的意思ellipse(椭圆中心点的x值,椭圆中心点的y值,半径x,半径y,旋转角度,起始角,结束角,顺时针还是逆时针),其中顺时针还是逆时针可以不写。

function drawellipse(bx,by,ex,ey){  
         var canvas = document.getElementById("canvas");
         var  ctx=canvas.getContext('2d')           
         ctx.beginPath();  //开始绘制            
         ctx.lineWidth =2; // 可以设置椭圆线的宽度            
         ctx.ellipse(centerx,centery,axisx,axisy,0,0,2*Math.PI);            
         ctx_anno.strokeStyle = "#07F407";  //设置椭圆线的颜色            
         ctx.stroke();
          }

2.参数方程法

 function drawellipse(bx,by,ex,ey){     
 	 var canvas = document.getElementById("canvas");
           var  ctx=canvas.getContext('2d')   		
           var step = (axisx>axisy)?1/axisx:1/axisy; // 每次循环绘制step,使得每次循环所绘制的路径(弧线)接近1像素    		
           ctx.beginPath();    		
           ctx.moveTo(centerx+axisx,centery);    		
           for(var i=0;i<2*Math.PI;i+=step){        		
           	ctx.lineTo(centerx+axisx*Math.cos(i),centery+axisy*Math.sin(i)); //数方程为x = a * cos(i), y = b * sin(i),i表示弧度   		 
           	} 
           ctx.closePath(); 
           ctx.stroke();
           }

上一篇: 绘制多边形

下一篇: 表达式求值