2013-06-04 3 views
3

У меня есть причудливая проблема с холстом и Chrome 27.0:Функция дуги холста сломана в Chrome 27.0?

После большого количества рисования на холсте, с помощью функции дуги рисует сплошные квадраты в Chrome на OS X, но отлично работает в Safari, Firefox на тот же ОС X, а в IE10, Chrome и Firefox в Windows все время все в порядке.

Проблема не воспроизводится без предварительного запуска гигантского пачки кода, поэтому я предполагаю, что это имеет какое-то отношение к тому, что делается заранее, но вот некоторая информация, возможно, кто-то может указать мне в направлении, Еще не думал.

Это код, который не удается:

ctx.beginPath(); 
    ctx.strokeStyle = "rgba(255, 255, 255, 0.9)"; 
    ctx.arc(cx*sfx, cy*sfy, width*sfy, 0, Math.PI * 2, false); 
    ctx.closePath(); 
    ctx.stroke(); 

я могу получить его, чтобы нарисовать круг в Chrome, не делая дугу над 2pi, но 1.9999pi. Этот код работает:

ctx.beginPath(); 
    ctx.strokeStyle = "rgba(255, 255, 255, 0.9)"; 
    ctx.arc(cx*sfx, cy*sfy, width*sfy, 0, Math.PI * 1.999, false); 
    ctx.closePath(); 
    ctx.stroke(); 

Что также работает, это удалить инструкцию beginPath(). Затем, однако, берется линия, из которой последний объект был нарисован на холсте до начальной точки круга.

Я пробовал переупорядочивать, удаляя удвоение инструкций начала/конца пути, и все это никак не зависит от описанных.

Любые подсказки кому-нибудь?

Приветствия

  • Balt
+0

Та же проблема здесь. (Windows 7 Chrome 27.0.1453.110) – Bodman

+0

У меня (на данный момент) были изменены все круги рисования кода дуги, чтобы использовать Math.PI * 1.9999 вместо Math.PI * 2. Очевидно, что это нехорошее решение, но на данный момент оно мостирует. – Balthasar

+0

Ах да. Проблема ушла, я все еще вижу ее на старой версии моего холста. – Bodman

ответ

0

Если бы тот же вопрос, я использовал тот же хак сначала, но потом я добавил MoveTo

ctx.moveTo(x + radius, y); 
    ctx.arc(x, y, radius, 0, Math.PI*2, true); 

    /* 
    Chrome suddenly started drawing a filled square (2013 May 26) 
    can't get the filled square though in jsfiddle 

    first try was changing it to 
    ctx.arc(x, y, radius, 0, Math.PI*1.999, false) 
    which worked, but then added the moveTo, which also made it work again 
    */ 
Смежные вопросы