Javascript “画布上下文”;“贝塞尔曲线”;在Chrome 16+;下有一个bugSafari 5&x2B;
如果抚摸最后一个控制点与第一个点重叠的贝塞尔曲线,曲线形状将不会显示在画布上;示例代码如下所示Javascript “画布上下文”;“贝塞尔曲线”;在Chrome 16+;下有一个bugSafari 5&x2B;,javascript,html,google-chrome,canvas,safari,Javascript,Html,Google Chrome,Canvas,Safari,如果抚摸最后一个控制点与第一个点重叠的贝塞尔曲线,曲线形状将不会显示在画布上;示例代码如下所示 var cv = document.getElementById('cv'), cxt = cv.getContext('2d'), // 4 points : last point overlaps first point; pts = [[100, 100], [400, 50], [350, 300], [100, 100]]; // draw bezier curve cxt
var cv = document.getElementById('cv'), cxt = cv.getContext('2d'),
// 4 points : last point overlaps first point;
pts = [[100, 100], [400, 50], [350, 300], [100, 100]];
// draw bezier curve
cxt.beginPath();
cxt.moveTo(pts[0][0], pts[0][1]);
cxt.bezierCurveTo(pts[1][0], pts[1][2], pts[2][0], pts[2][3], pts[3][0], pts[3][4]);
cxt.stroke();
我以前在chrome帮助论坛上问过,但从未得到任何回复。为什么没有人注意到这一点?是虫子吗
由于我现在没有附加图像的许可,请检查这里的实时样本,您肯定知道我在说什么:
这是hack,但您可以在其中一个坐标(x或y)上应用小偏移量。在这种情况下,第一个点和最后一个点的坐标将不完全相同,
Chrome
将绘制曲线。试着这样做:
pts = [[100, 100], [400, 50], [350, 300], [100, 100]];
//....
cxt.moveTo(pts[0][0], pts[0][1]);
cxt.bezierCurveTo(pts[1][0], pts[1][1],
pts[2][0], pts[2][1],
pts[3][0], pts[3][1]+1e-5);
试图吸引Webkit开发人员的眼球?:)谢谢事实上,我知道如何解决这个问题,但我只是想通知Chrome团队在一些更高版本中解决这个问题。我很久以前就在Chrome论坛上发布了这个问题,但没有得到任何回应。@zc0000所以在
stackoverflow
中,我想你正在寻找观众来支持你“敲开Webkit
开发者之家的大门”。)