VML ненулевая обмотка
Я пытаюсь нарисовать сложные полигоны с помощью HTML-холста. Я должен выбрать либо "четно-нечетное", либо "ненулевое" правило намотки. Браузеры применяют ненулевое правило намотки по умолчанию. В IE11+ и других основных браузерах правило наматывания может быть изменено на четно-нечетное.
Я хочу, чтобы это было согласовано и в старых браузерах (с поддержкой IE8+). Теперь, поскольку в IE9 и IE10, похоже, нет способа изменить правило намотки, я спрашиваю, есть ли способ изменить намотку для IE8.
Я использую excanvas.js для IE8. Excanvas.js использует формы VML для имитации фигур на холсте и по умолчанию применяет четно-нечетное правило. Есть ли способ изменить обмотку для форм VML на ненулевое правило?
Скрипка для игры.
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.beginPath();
context.moveTo(111, 108), context.lineTo(112, 141), context.lineTo(155, 143), context.lineTo(140, 171), context.lineTo(113, 170), context.lineTo(92, 168), context.lineTo(80, 142), context.lineTo(79, 117), context.lineTo(82, 86), context.lineTo(103, 75), context.lineTo(131, 67), context.lineTo(179, 67), context.lineTo(177, 55), context.lineTo(122, 39), context.lineTo(93, 45), context.lineTo(60, 57), context.lineTo(41, 79), context.lineTo(36, 108), context.lineTo(43, 149), context.lineTo(65, 187), context.lineTo(104, 203), context.lineTo(146, 206), context.lineTo(173, 190), context.lineTo(187, 160), context.lineTo(195, 115), context.lineTo(152, 110)
context.closePath();
context.moveTo(44, 50), context.lineTo(90, 66), context.lineTo(61, 27)
context.closePath();
// Use either nonzero or evenodd
//context.fill("nonzero");
//context.fill("evenodd");
context.fill();
<canvas width="250" height="250" id="canvas"></canvas>
Четный-нечетный / ненулевой
1 ответ
Я спрашиваю, есть ли способ изменить обмотку [заполнить правило] для IE8?
Стандарт VML не позволяет определять правила заполнения, поэтому четный-нечетный является единственным вариантом.
Вы можете обойти некоторые проблемы, отрисовывая каждый подпуть отдельно. Это, конечно, может вызвать другие проблемы на другом конце, когда путь зависит от них для конечного результата.