# Режим заливки в CorelDRAW, или почему некоторые кривые имеют заливку в тех областях, где должен быть просвет

Наверное, каждый пользователь CorelDRAW хоть раз, но сталкивался с такой проблемой, когда скомбинированные кривые (пути) имеют заливку даже в тех местах где должны быть просветы. И решение то вроде простое — поменять направление одного из путей. Но почему так происходит и что это за «баг» такой? А, может, и не «баг» вовсе...

И, действительно, это ни какой не «баг», а одна из особенностей работы с кривыми. Всё дело в том, что CorelDRAW поддерживает два режима заливки: Alternate и Winding.

Режим заливки в CorelDRAW

По умолчанию в программе используется именно Alternate режим, а поменять его на Winding можно только из VBA. Но истинные причины появлений кривых с таким режимом заливки совсем не в VBA, а в импорте файлов ПостСкрипт форматов (ai, pdf, eps), где кривые могут иметь заливку с режимом Winding.

Кстати говоря, этот режим имеет одну дополнительную особенность — реверс направления пути приводит к появлению просвета, что в свою очередь позволяет использовать залитые участки с просветами в одной кривой.

Режим заливки в CorelDRAW

Т.к. менять режим через пользовательский интерфейс нельзя, я написал макрос, который переключает режим заливки с одного на другой:

Sub ChangeFillMode()
  If ActiveSelectionRange.Count = 0 Then Exit Sub
  Dim s As Shape
  For Each s In ActiveSelectionRange
    If s.CanHaveFill Then
      If s.Fill.Type <> cdrNoFill Then
        If s.FillMode = cdrFillAlternate Then _
          s.FillMode = cdrFillWinding Else _
          s.FillMode = cdrFillAlternate
      End If
    End If
  Next
End Sub

Для справки

Nonzero-rule

results matching ""

    No results matching ""