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 не позволяет определять правила заполнения, поэтому четный-нечетный является единственным вариантом.

Вы можете обойти некоторые проблемы, отрисовывая каждый подпуть отдельно. Это, конечно, может вызвать другие проблемы на другом конце, когда путь зависит от них для конечного результата.

Другие вопросы по тегам