Tôi đang cố gắng vẽ một hình bầu dục mịn bằng cách sử dụng thuộc tính ctx.clip trong canvas.I của tôi đã thực hiện với phần vẽ tôi đang đối mặt với vấn đề với đường thẳng hình bầu dục rõ ràng. Bất kỳ ai có bất kỳ ý tưởng nào về điều này chỉ cho tôi biết? Đây là mã của tôi.Làm thế nào để vẽ một hình bầu dục mịn trong vải
<canvas id="c" width="400" height="400"></canvas>
var canvas = new fabric.Canvas('c');
var ctx = canvas.getContext('2d');
var cx=180;
var cy=200;
var w=300;
var h=250;
// Quadratric curves example
ctx.beginPath();
var lx = cx - w/2,
rx = cx + w/2,
ty = cy - h/2,
by = cy + h/2;
var magic = 0.551784;
var xmagic = magic*w/2;
var ymagic = h*magic/2;
ctx.moveTo(cx,ty);
ctx.bezierCurveTo(cx+xmagic,ty,rx,cy-ymagic,rx,cy);
ctx.bezierCurveTo(rx,cy+ymagic,cx+xmagic,by,cx,by);
ctx.bezierCurveTo(cx-xmagic,by,lx,cy+ymagic,lx,cy);
ctx.bezierCurveTo(lx,cy-ymagic,cx-xmagic,ty,cx,ty);
ctx.fill();
ctx.stroke();
ctx.clip();
var text;
text = new fabric.Text('Honey', {
fontSize: 50,
left: 150,
top: 150,
lineHeight: 1,
originX: 'left',
fontFamily: 'Helvetica',
fontWeight: 'bold'
});
canvas.add(text);
Bạn có thể thấy sản lượng này trên đây biên giới dòng hình bầu dục không rõ ràng hơn nhiều.
Một dòng một pixel sẽ không phải rất rõ ràng, bạn sẽ phải chống alias nó –
gì exacly @JuanMendes –