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

Источник: cdrpro
Sancho

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

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

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

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

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

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

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

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

view source print?
01  Sub ChangeFillMode()  
02    If ActiveSelectionRange.Count = 0 Then Exit Sub 
03    Dim s As Shape  
04    For Each s In ActiveSelectionRange  
05      If s.CanHaveFill Then 
06        If s.Fill.Type <> cdrNoFill Then 
07          If s.FillMode = cdrFillAlternate Then _  
08            s.FillMode = cdrFillWinding Else _  
09            s.FillMode = cdrFillAlternate  
10        End If 
11      End If 
12    Next 
13  End Sub 

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=29284