Maison > Article > interface Web > Comment dessiner une ellipse avec canevas ? Résumé des méthodes pour dessiner des ellipses avec canevas
L'élément canevas en HTML5 est utilisé pour dessiner des images dans le navigateur, donc canevas peut dessiner de nombreuses images différentes. Aujourd'hui, nous allons donc voir comment canevas dessine une ellipse. Sans plus tarder, passons directement au texte. .
Tout d'abord, jetons un coup d'œil à la méthode de dessin d'une ellipse fournie avec Canvas
ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle , dans le sens inverse des aiguilles d'une montre).
Paramètres (de gauche à droite) :
(point de départ x, point de départ y, rayon x, rayon y, angle de rotation , point de départ Angle de départ, angle résultat, dans le sens des aiguilles d'une montre ou dans le sens inverse)
Regardons le code de la méthode pour dessiner une ellipse fourni avec le canevas :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>椭圆</title> </head> <body> <canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;"> 当前浏览器不支持Canvas,请更换浏览器后再试 </canvas> <script> window.onload = function(){ var canvas = document.getElementById("canvas"); var ctx=canvas.getContext('2d'); canvas.width = 800; canvas.height = 800; if(ctx.ellipse){ ctx.ellipse(300,300,200,100,0,0,Math.PI*2); ctx.fillStyle="blue"; ctx.strokeStyle="#000"; ctx.fill(); ctx.stroke(); }else{ alert("no ellipse!"); } } </script> </body> </html>
canvas L'effet de l'ellipse dessinée est le suivant :
Remarque : Cette méthode semble n'être prise en charge que par Google à l'heure actuelle, et ellipse() le fait n'existe pas encore dans d'autres navigateurs.
Étant donné que la méthode ci-dessus ne peut pas prendre en charge les autres navigateurs, examinons d'autres méthodes de canevas pour dessiner des ellipses.
1. Utilisez Canvas pour dessiner un cercle afin de dessiner une ellipse
Cette méthode utilise une échelle de fonction Canvas, qui peut réaliser la mise à l'échelle du canevas. Il existe deux directions de mise à l'échelle : horizontale et verticale. Dans le code, le canevas est agrandi dans la direction horizontale, mais la direction verticale reste inchangée. Par conséquent, le cercle initialement dessiné par un arc devient une ellipse.
Le code pour dessiner une ellipse sur toile est le suivant :
<!DOCTYPE HTML> <html> <head> <style> body { margin: 0px; padding: 0px; } </style> </head> <body> <canvas id="myCanvas" width="578" height="200"></canvas> <script> var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d'); var centerX = 0; var centerY = 0; var radius = 50; // save state context.save(); // translate context context.translate(canvas.width / 2, canvas.height / 2); // scale context horizontally context.scale(2, 1); // draw circle which will be stretched into an oval context.beginPath(); context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); // restore to original state context.restore(); // apply styling context.fillStyle = 'pink'; context.fill(); context.lineWidth = 5; context.strokeStyle = 'black'; context.stroke(); </script> </body> </html>
L'effet ellipse sur toile est le suivant :
2. Utilisez la courbe de Bézier pour dessiner une ellipse sur la toile
Cette méthode de dessin d'ellipse est dessiner une ellipse Elle est divisée en 4 courbes de Bézier et reliées pour former une ellipse.
Le code pour dessiner une ellipse sur toile est le suivant :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>椭圆</title> </head> <body> <canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;"> 当前浏览器不支持Canvas,请更换浏览器后再试 </canvas> <script> var canvas = document.getElementById("canvas"); canvas.width = 600; canvas.height = 600; var context = canvas.getContext("2d"); context.lineWidth = 10; context.strokeStyle="black"; BezierEllipse2(context, 470, 200, 100, 20); //椭圆 function BezierEllipse2(ctx, x, y, a, b){ var k = .5522848, ox = a * k, // 水平控制点偏移量 oy = b * k; // 垂直控制点偏移量</p> <p> ctx.beginPath(); //从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线 ctx.moveTo(x - a, y); ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b); ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y); ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b); ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y); ctx.closePath(); ctx.stroke(); }; </script> </body> </html>
L'effet ellipse sur toile est le suivant :
3. Utilisez deux courbes de Bézier pour dessiner une ellipse sur toile
Le code pour dessiner une ellipse sur toile est le suivant :
//椭圆 CanvasRenderingContext2D.prototype.oval = function (x, y, width, height) { var k = (width/0.75)/2, w = width/2, h = height/2; this.beginPath(); this.moveTo(x, y-h); this.bezierCurveTo(x+k, y-h, x+k, y+h, x, y+h); this.bezierCurveTo(x-k, y+h, x-k, y-h, x, y-h); this.closePath(); return this; }
Remarque : Cette méthode n'a besoin de mémoriser que ce point. Le rapport entre la largeur de l'ellipse et les coordonnées des points de contrôle de la courbe de Bézier qui dessine l'ellipse est le suivant :
Point de contrôle de Bézier x = (largeur de l'ellipse/0,75)/2.
Cet article se termine ici. Pour un contenu plus passionnant, vous pouvez faire attention au site Web chinois php.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!