Ответ: Из-за чего градиент с затемнением есть, но не отображается
В общем, более-менее разобрался, попытаюсь популярно объяснить в чем дело. Да, это баг корела. Связан он с тем, что при импорте объекта с градиентной заливкой из AI файла, корел добросовестно импортирует координаты конца градиентного вектора, даже если он и установлен фиг знает в какую точку, как показано на скриншоте Йожига в сообщении #9. В результате, вроде бы, визуально все правильно - градиент выглядит примерно одинаково что в иллюстраторе, что в кореле. Ан нет! Импортирует-то он его правильно, но свои ползунки для редактирования градиентного вектора корел выставляет по стандарту - по границам объекта. В результате складывается катастрофическая ситуация, что ни руками ни скриптами вернуть конечную точку из дальнего далека, куда ее захренячило при импорте, невозможно - она существует чисто умозрительно, а оперировать можно только точкой, которая горздо ближе по вектору к началу. Все усугубляется тем, что, оказывается, данное свойство (координаты вектора теоретически возможного градиента) присуще всем объектам, даже если объект состоит из одной точки. То есть, можно разбить такой нехороший объект на сколь угодно мало частей и каждой из этой части будет невозможно присвоить
ЛЮБУЮ градиентную заливку. Более того, при попытке применить булевы операции к такому объекту, нормальный объект, с которым эти операции проделывают "заражается" этим свойством и после обратной операции тоже перестает нормально отображать градиентную заливку (правда, как подсказал Лев, зависит от порядка выбора объектов) Убить это свойство (правда, только вместе с градиентной заливкой) еще можно экспортом-импортом в EPS файл, поскольку постскрипт старых уровней градиенты не поддерживал вообще, соответственно это свойство не наследовал, в отличие от AI-PDF. Побороть эту засаду с сохранением заливки (вернуть градиент в стандартный кореловский вектор, что в общем, хоть и не совсем то, но все таки является лучшим решением проблемы) можно и вот таким макросом:
Код:
Sub UpdateFontain()
Dim s As Shape
Dim s1 As Shape
Dim crv As Curve
Set Sel = ActiveSelectionRange
If Sel.Count < 1 Then Exit Sub
Set s = Sel(1)
Set crv = s.Curve.GetCopy()
Set s1 = ActiveLayer.CreateCurve(crv)
Set ou = s.Outline
s1.Outline.CopyAssign (ou)
s1.Fill = s.Fill
s.Delete
End Sub
Надеюсь, присутствующие здесь представители корела и бетатестеры зафиксируют этот баг и какие то меры примут, ибо, действительно как то нехорошо получается - ведь он присутствует с самого начала и до последней версии - неужели до сих пор никто не нарвался?