Где докеры в coreldraw

Обновлено: 02.07.2024

Эффект Контур создает концентрические контуры снаружи или внутри базовых фигур, кривых или текста. Когда эффект связан с объектом, последний становится управляющим, а новые формы — группой Контура. Изменения, внесенные в оригинальный объект, сразу же влияют на связанную группу. После того как группа Контура выбрана, ее свойства могут быть в любое время изменены.

Применение Контура

Применить и настроить эффект Контур можно разными способами. Назначается эффект с помощью соответствующего инструмента или в докер­-окне. Настройка может быть выполнена интерактивными маркерами или кнопками на панели атрибутов
Чтобы создать эффект с помощью инструмента, необходимо выделить исходный объект, затем выбрать инструмент Contour (Контур) (рис. 1).

Рис. 1. К выделенному пятиугольнику применяется инструмент Contour (Контур). Указатель изменился (справа)
В результате указатель мыши изменится, и на панели атрибутов появятся соответствующие элементы управления. Необходимо щелкнуть мышью по объекту и перетащить указатель в нужном направлении. Перемещение указателя внутрь объекта (рис. 2а) создаст внутренний контур Inside Contour (Внутрь), перетаскивание в обратном направлении (рис. 2б) приведет к созданию внешнего контура Outside Contour (Наружу).

Рис. 2. Создание внутреннего (а) и внешнего (б) контура
Чтобы создать контур с помощью пристыкованного окна (докера), необходимо выделить объект, выбрать нужные настройки, а затем нажать кнопку Apply (Применить). В этом случае перетаскивать указатель мыши не понадобится. Эффект Контура будет построен немедленно после нажатия этой кнопки (рис. 3).

Рис. 3. Создание внутреннего контура с помощью пристыковываемого окна. Слева — результат применения эффекта Контур

Виды контура


Программа CorelDRAW предлагает три вида контура: To Center (К центру), Inside Contour (Внутрь) и Outside Contour (Наружу). Первые два вида создают контур внутри объекта, третий — вокруг объекта. Контур к центру создается таким образом, чтобы созданные фигуры заполнили весь объект (рис. 4б), позволяется настроить только расстояния между фигурами. При создании внутреннего контура можно настроить как число фигур, так и расстояние между ними (рис. 4г).

Рис. 4. Исходный объект (а) и результат создания трех типов контура: To Center (б); Outside Contour (в); Inside Contour (г)
Для переключения между видами контура используются соответствующие кнопки на панели свойств инструмента или флажки в докер­окне.

Настройка контура

Настраивать уже созданный контур возможно интерактивно с помощью маркеров и ползунка либо используя кнопки на панели атрибутов. Второй способ наиболее универсальный, так как панель свойств имеет доступ ко всем элементам эффекта. А вот интерактивные маркеры и ползунок могут изменить только количество фигур в группе контура и расстояние между ними.
Чтобы изменить число фигур в группе у внутреннего контура, следует перетащить квадратный маркер: внутрь фигуры — для увеличения числа объектов (рис. 5а) и наружу — для уменьшения их числа (рис. 5б).

Рис. 5. Изменение числа фигур у внутреннего контура с помощью квадратного маркера: а — увеличение, б — уменьшение
Для изменения числа фигур в группе внешнего контура квадратный маркер следует тащить в обратном направлении: наружу — чтобы увеличить число фигур (рис. 6а), внутрь — чтобы уменьшить их количество (рис. 6б).

Рис. 6. Изменение числа фигур у внешнего контура: а — увеличение, б — уменьшение
Для изменения расстояния между фигурами группы используется белый ползунок. Чтобы уменьшить расстояние, следует сместить ползунок вправо для внутреннего контура (7а) и влево — для внешнего контура (7б). При этом число фигур меняется автоматически.
Чтобы можно было независимо влиять на эти два параметра, используются соответствующие кнопки на панели атрибутов: Contour Steps (Шаги) для задания количества фигур в группе (этот параметр недоступен для контура К центру) и Contour offset (Смещение) для задания расстояния между фигурами в группе.

Рис. 7. Уменьшение расстояния между фигурами в группе: а — для внутреннего контура, б — для внешнего контура

Настройка цветов эффекта Контур

Цветовой результат эффекта зависит как от цвета заливки и контура (абриса) исходного объекта, так и цвета заливки и контура самого инструмента Контур. Для настройки цветов эффекта используются кнопки на панели атрибутов. Если цвета эффекта совпадают с цветами исходного объекта, мы получаем самый простой эффект (рис. 8а). Если цвета эффекта и исходной фигуры не совпадают, группа фигур контура плавно перекрашивается от исходного к конечному цвету (рис. 8б, в).

Рис. 8. Примеры настройки цвета эффекта Контур (б, в). Исходная фигура (а) имеет контур красного цвета и однородную заливку розового цвета
Если исходный объект имеет градиентную заливку, то на панели атрибутов будут доступны два цвета для заливки. На рис. 9 приведены примеры настройки такого типа заливки.

Рис. 9. Примеры настройки цвета эффекта Контур (б, в). Исходная фигура (а) имеет контур красного цвета и фонтанную заливку: линейный градиент от розового к малиновому цвету
Важно запомнить следующий момент — эффект Контур задает заливку и контур только в том случае, если таковые имеются у исходного объекта. Например, если исходный объект имеет контур, но не имеет заливки, эффект Контур также будет содержать только настройку для контура.
Аналогично эффекту Перетекание для Контура можно задать варианты перетекания спектра цвета: прямое (рис. 10а), по часовой стрелке (рис. 10б) и против часовой стрелки (рис. 10в).

Рис. 10. Варианты перетекания спектра цвета: прямое (а), по часовой стрелке (б), против часовой стрелки (в)

Ускорение Контура


Как и Перетекание, эффект Контур имеет настройку ускорения, которое позволяет добиться неравных промежутков между фигурами группы контура и смещения цвета в сторону цветов исходного (рис. 11б) или конечного (рис. 11в) объекта. Для этого следует удалить связь между цветом и объектом, что позволит настраивать ускорение цвета и объектов независимо друг от друга.

Рис. 11. Примеры настройки ускорения Контура: а — ускорение цвета и объектов связаны; б — ускорение объектов смещено в сторону исходного объекта; в — ускорение цвета смещено в сторону конечного объекта

Отделение контура от управляющего объекта


По умолчанию все изменения, внесенные в исходный объект, сразу же влияют на связанную группу. Но если требуется независимо настроить управляющий объект от группы контура, эту связь необходимо разорвать. Для этого следует выделить объекты и нажать комбинацию клавиш Ctrl+K или выполнить команду Arrange (Упорядочить) → Break Contour Group Apart (Разъединить контурную группу). При отделении контура от управляющего объекта группа контура рассматривается как один объект. Чтобы настраивать фигуры, входящие в группу, по отдельности, необходимо их предварительно разгруппировать. Так и было сделано на рис. 12 перед тем, как перекрасить три пятиугольника из группы контура.

Рис. 12. Для перекрашивания трех объектов из группы контура было проведено отделение контура от управляющего объекта. Слева — исходный эффект

Удаление эффекта Контура

При задании небольшого числа шагов контура получается «ленточный» эффект, который можно применять, например, при имитации глубины или рисовании карт температур. На рис. 13 приведена иллюстрация карты глубин озера Байкал. Изображение озера состоит из трех объектов, к двум из которых применен эффект Контур с количеством шагов 2, у контура нижнего объекта число шагов увеличено до 3.

Рис. 13. Эффект Контур с небольшим числом шагов создает пошаговый переход между цветами (в данном случае — между оттенками синего цвета): а — исходная заливка со сплошными цветами, б — пример с эффектом контура
При увеличении числа шагов возникает эффект плавного перехода от одного цвета к другому, который можно использовать для имитации объема. Рассмотрим пример рисования яблока с применением разного числа шагов эффекта Контур:
1. Сначала нарисуем два пересекающихся овала и сгруппируем их. Такую форму будет иметь наше будущее яблоко (рис. 14а).
2. Используем к овалам внешний контур с шагом 1 и со смещением в 5­7 мм, чтобы получить очертания яблока, но без внутренних пересечений (рис. 14б).
3. Отделяем контур от управляющего объекта (Ctrl+K) и удаляем управляющий объект (рис. 14в).
4. Закрашиваем полученную фигуру сплошной заливкой красного цвета, удаляем контур (абрис) объекта (рис. 14г).





Рис. 14. Схема рисования яблока: а — созданы два пересекающихся овала; б — к группе применен внешний контур с шагом 1; в — контур и управляющий объект разъединены, исходный объект удален; г — полученная фигура закрашена красным цветом, контур (абрис) удален; д — к фигуре применен внутренний контур желтого цвета с большим числом шагов
5. Применяем к фигуре внутренний контур с большим числом шагов и минимальным смещением. Цвет контура назначаем желтым. Если вас не устраивает вариант перехода от красного к желтому цвету, полученный автоматически, его можно настроить, изменив ускорение цвета и объекта. Но предварительно не забудьте разорвать связь между ними. В примере ползунок ускорения объекта был сдвинут влево. Дорисовываем листья и плодоножку (рис. 14д).
Используя большое число шагов и незначительную величину смещения, инструментом Контур можно также нарисовать тень или свечение объекта (рис. 15а, б).

Рис. 15. Для изображения тени и свечения использовался внешний контур: а — для тени: число шагов 900, смещение 0,025 мм; б —для свечения: число шагов 100, смещение 0,125 мм
Направление контура К центру (To center) идеально подойдет для рисования мишени с соблюдением требований Международной федерации спортивной стрельбы: «единица» — 500 мм, черное «яблоко» — 200 мм, расстояние между линиями — 25 мм.
1. Рисуем окружность диаметром 500 мм. Настраиваем цвет абриса — черный, цвет заливки — белый (рис. 16а).
2. Применяем эффект контура К центру (To center) со значением смещения 25 мм. Число шагов инструмент определит автоматически (рис. 16б).
3. Отделяем эффект контура от управляющего объекта и проводим разгруппировку объектов. Выделяем четыре внутренних круга и перекрашиваем для них цвет абриса и заливки: абрис — белый, заливка — черная (рис. 16в).
4. Наносим цифры (рис. 16г).




Рис. 16. Схема рисования мишени: а — создана окружность диаметром 500 мм с белой заливкой и черным абрисом; б — применен эффект контура К центру; в — для четырех внутренних кругов изменены цвета абриса и заливки на противоположные; г — нанесены цифры
Этот же вид контура с небольшим числом шагов и величиной смещения в несколько миллиметров можно использовать для рисования игровых лабиринтов. Немного отредактировав построенный контур, можно получить, к примеру, лабиринт, представленный на рис. 17б.

Рис. 17. Пример лабиринта, созданного на основе эффекта контура К центру: а — этапы построения лабиринта; б — итоговый рисунок
Как упоминалось ранее, если у исходного объекта цвет заливки не задавать, то группа объектов контура также не будет иметь заливки. Это свойство эффекта было использовано для создания примера на рис. 18. Контурами объектов являются коричневые линии, повторяющие форму чайки и текста. Контур применен прямо к тексту, предварительной конвертации его в кривые не проводилось. Для создания эффекта полупрозрачных букв была создана копия текста, закрашенная сплошной заливкой темно­коричневого цвета, и к ней была применена линейная интерактивная прозрачность.
Отметим, что внешний контур имеет одну очень интересную особенность. В отличие от внутренних контуров он может быть применим к открытому пути. Более того, если величина смещения больше толщины кривой, то, задав заливку контура, можно создать впечатление, что полученная фигура имеет заливку, хотя на самом деле это всего лишь незамкнутая кривая, которая в принципе заливки иметь не может (рис. 19).

Копирование контура

Для копирования эффекта Контур используется кнопка Copy contour properties (Копировать свойства контура) на панели атрибутов инструмента или команда Effects (Эффекты) → Copy Effect (Скопировать эффект) → Contour From (Контур). Необходимо выбрать объект, к которому требуется применить эффект. Нажать кнопку или выполнить команду, а потом щелкнуть появившейся толстой черной стрелкой по тому объекту, с которого вы собираетесь скопировать эффект. Таким способом на рис. 18 был скопирован эффект с изображения чайки на текст, а потом у полученного результата было немного увеличено число шагов контура.

Рис. 18. Созданный эффект Контур не имеет заливки, цвет меняется только у абриса группы контура

Рис. 19. Внешний контур применен к открытому пути: а — исходная незамкнутая кривая толщиной 2 мм; б — результат внешнего контура с шагом 1 и смещением 2 мм; в — внешний контур с числом шагов 1 и смещением 4 мм

Перетекание или Контур?


Многие из приведенных здесь примеров можно было получить и с помощью инструмента Перетекание, например яблоко, мишень или тень со свечением. Но для создания внутреннего затенения для объекта инструмент Blend (Перетекание) не слишком подходит. На рис. 20 приведены два примера с использованием обоих эффектов. К надписи на рис. 20а был применен эффект Контура с направлением К центру (To center) и с небольшим значением смещения 0,4 мм. В результате мы получили то, что хотели. А вот на рис. 20б выполнено перетекание от большого объекта к маленькому. Как видно, эффект сосредоточен внутри большей надписи, а промежуточные объекты перетекания непропорционально масштабируются. Получается, что для создания плавно затененных объектов необходимо использовать внутренний контур с большим числом шагов и небольшим значением смещения или контура К центру со значением смещения меньше 1 мм.

Рис. 20. Для создания внутреннего затенения объекта идеально подходит инструмент Контур (а), а инструмент Перетекание непропорционально масштабирует части промежуточных объектов (б)

Докер – изобретенный разработчиками CorelDRAW новый тип элемента интерфейса, впервые появившийся в восьмой версии программы. Он был призван полностью заменить плавающие палитры (свитки), существовавшие в программе, начиная с третьей версии. Докеры удобнее их предшественников.

Впрочем, убедитесь в этом сами:

1. Откройте список докеров командой Dockers (Докеры) меню Window (Окно).

2. Выберите пункт View Manager (Диспетчер видов). В правой части окна программы появится одноименный докер (рис. 2.17).


Рис. 2.17. Окно программы с докером в правой части

Как видите, докер занимает несколько больше места, чем плавающая палитра, но зато он не перекрывает окно документа. Докер можно свернуть нажатием кнопки с двумя треугольными стрелками в его левом верхнем углу (рис. 2.18).


Рис. 2.18. Свернутый докер

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

1. Выберите команду Dockers (Докеры) меню Window (Окно).

2. В списке докеров отметьте пункт Link Manager (Диспетчер связей).

3. Появившийся докер Link Manager (Диспетчер связей) закрыл докер View Manger (Диспетчер видов), но вы можете легко переключаться между ними, щелкая на ярлыках. Как видите, при увеличении количества открытых докеров занимаемое ими пространство экрана не увеличивается.

К тому же, вы можете быстро освободить и его, свернув все докеры одновременно единственным щелчком мышью.

Докеры сохранили и функциональность палитр. Чтобы убедиться в этом:

1. Подведите курсор мыши к заголовку докера.

2. Перетащите окно докера в направлении окна документа. Докеры стали плавающими, т. е. превратились в палитры. При этом оба докера занимают единственное окно и активизируются щелчком мыши на ярлыке с именем.

3. Подведите курсор мыши к ярлыку одного из докеров.

4. Перетащите выбранный докер за пределы второго. В результате вы получите две "палитры".

5. Плавающие докеры можно снова закрепить вдоль любой стороны главного окна программы. Перетащите один из докеров к правому краю окна программы. Он закреплен.

6. Перетащите второй докер к закрепленному. Оба докера снова закреплены.

7. Если докер больше не нужен, его можно закрыть щелчком на пиктограмме с изображением маленького крестика. Закройте активный докер.

8. Щелкните на пиктограмме с большим крестиком в окне докеров. Этим вы закроете все активные докеры.

Для программистов – с 2002 года работаю препресс инженером в типографии. Для меня программирование это хобби: и код, и описание не идеальны. Поэтому буду рад корректуре и критике.

Для полиграфистов – понимаю, что спуски собирают в специализированных программах, но в реалиях моего города это не целесообразно. Тиражи небольшие, а количество макетов наоборот велико и 95% процентов макетов сделано в CorelDraw.

Что понадобится, чтобы магия заработала:

Начальные знания WPF

Для удобства написания воспользуемся дополнениями для Visual Studio от “bonus360”:

Запустим студию от имени администратора, чтобы при компилировании копировать файлы в системные папки. Создаем новый проект, выбрав в качестве шаблона – “CorelDRAW Docker Addon”. Присваиваем имя, например “MagicUtilites”.


В появившемся окошке присваиваем имя докеру, например также “MagicUtilites”, и выбираем те версии CorelDraw, под которые будем разрабатывать. Жмем “Done” и наблюдаем как рутина выполняется сама.


Небольшое отступление. Если при первом запуске возникла ошибка, проверьте объявление пространства имен в файле Extensions.cs, оно должно совпадать с названием проекта.

На этом этапе можно нажать F5 и найти в меню CorelDraw - Window - Dockers ваш докер. Сейчас он пустой и ничего не делает, но мы это исправим.

Открываем файл DockerUI.xaml в конструкторе XAML и добавляем кнопку на докер.

В этот раз сделаем не следуя шаблону MVVM (именно им надо пользоваться разрабатывая на платформе WPF), а разместим код в обработчике события нажатия на кнопку. Но больше такого не повторится, обещаю.

Открываем файл DockerUI.xaml.cs

Класс corel.Application представляет приложение, в котором выполняется код докера. Значение полю присваивается в конструкторе.

Отредактируем метод Button_Click .

В начале метода добавим проверку, что в CorelDraw есть открытый файл. И если открытого файла нет, прекращаем выполнение.

Свойство ActiveDocument типа corel.Application возвращает ссылку на активный документ.

Добавим быстродействия программе.

Остальной код должен быть между этими строками. Метод расширения BeginDraw() отключает перерисовку экрана, вызов событий и выделение corel объектов во время выполнения. Метод расширения EndDraw() восстанавливает настройки.

В активном документе выполним перебор всех страниц. На каждой странице выполним перебор всех corel объектов для поиска текстовых объектов.

При нахождении текстовых объектов, вызывается метод ConvertToCurves() , который переводит этот corel объект в кривые.

Запустим выполнение. Для проверки кнопки “Text Convert to Curves” нужен открытый документ и текст в нем. Реализованный код работает с любыми текстовыми corel объектами, но если этот объект находится в группе объектов или в PowerClip преобразования в кривые не произойдет.

Для решения этой проблемы, разберем как Corel Draw представляет объекты в коде.

Класс corel.Shape содержит свойства и методы для взаимодействия с corel объектами. Свойство Type возвращает именованную константу которая определяет тип corel объекта. Если corel.Shape представляет группу corel объектов, свойство Type вернёт константу cdrGroupShape . Тогда обратившись к свойству Shapes , получим коллекцию corel объектов из группы.

Также с другими типами corel объектов. Если свойство Type возвращает cdrBitmapShape , то свойство Bitmap возвращает ссылку на картинку. Если свойство Type возвращает cdrGuidelineShape , свойство Guide возвращает ссылку на направляющую.

Узнать что corel объект – PowerClip так не получится. Чтобы проверить является ли corel объект PowerClip-ом, проверьте свойство PowerClip на null.

Вернемся к коду.

Выделим перебор corel объектов в два отдельных метода.

Метод MakeToAllPages перебирает все страницы документа.

Метод MakeToShapeRange рекурсивно перебирает переданную коллекцию corel объектов.

В первом условии проверяем является ли corel объект группой и если да, запускаем проверку corel объектов в группе. Во втором проверяем является ли corel объект PowerClip-ом и если да, запускаем проверку corel объектов которые он содержит. В третьем условии проверяем является ли corel объект текстом и если да, переводим его в кривые.

В методе Button_Click остается только вызов метода MakeToAllPages .

Запустим выполнение. Теперь текст обрабатывается в группах и PowerClip.

Но докер с одной кнопкой, это не интересно, добавим больше кнопок.

Добавим обработчики нажатия для этих кнопок.

Сейчас вся работа с corel объектом происходит в методе MakeToShapeRange . Но теперь нам надо находить не только текст, но и картинки и определять есть ли заливка или обводка у corel объекта. Чтобы много раз не копировать код метода MakeToShapeRange , воспользуемся делегатами.

Изменим сигнатуру метода MakeToAllPages() на MakeToAllPages(Action<corel.Shape> action) . Так как вся работа происходит в методе MakeToShapeRange изменим и его сигнатуру. А в методе MakeToAllPages изменим его вызов.

Не забываем изменить аргументы в рекурсивном вызове метода.

Теперь в методах обработчиках нажатия можно воспользоваться вызовом метода MakeToAllPages с анонимным делегатом в качестве аргумента.

Далее уточнения будут в комментариях кода.

На этом сеанс практической магии на сегодня закончен.

В следующей статье хочу описать создание докера для автоматического рисования меток реза на спуске.

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

Для программистов – с 2002 года работаю препресс инженером в типографии. Для меня программирование это хобби: и код, и описание не идеальны. Поэтому буду рад корректуре и критике.

Для полиграфистов – понимаю, что спуски собирают в специализированных программах, но в реалиях моего города это не целесообразно. Тиражи небольшие, а количество макетов наоборот велико и 95% процентов макетов сделано в CorelDraw.

Что понадобится, чтобы магия заработала:

Начальные знания WPF

Для удобства написания воспользуемся дополнениями для Visual Studio от “bonus360”:

Запустим студию от имени администратора, чтобы при компилировании копировать файлы в системные папки. Создаем новый проект, выбрав в качестве шаблона – “CorelDRAW Docker Addon”. Присваиваем имя, например “MagicUtilites”.


В появившемся окошке присваиваем имя докеру, например также “MagicUtilites”, и выбираем те версии CorelDraw, под которые будем разрабатывать. Жмем “Done” и наблюдаем как рутина выполняется сама.


Небольшое отступление. Если при первом запуске возникла ошибка, проверьте объявление пространства имен в файле Extensions.cs, оно должно совпадать с названием проекта.

На этом этапе можно нажать F5 и найти в меню CorelDraw - Window - Dockers ваш докер. Сейчас он пустой и ничего не делает, но мы это исправим.

Открываем файл DockerUI.xaml в конструкторе XAML и добавляем кнопку на докер.

В этот раз сделаем не следуя шаблону MVVM (именно им надо пользоваться разрабатывая на платформе WPF), а разместим код в обработчике события нажатия на кнопку. Но больше такого не повторится, обещаю.

Открываем файл DockerUI.xaml.cs

Класс corel.Application представляет приложение, в котором выполняется код докера. Значение полю присваивается в конструкторе.

Отредактируем метод Button_Click .

В начале метода добавим проверку, что в CorelDraw есть открытый файл. И если открытого файла нет, прекращаем выполнение.

Свойство ActiveDocument типа corel.Application возвращает ссылку на активный документ.

Добавим быстродействия программе.

Остальной код должен быть между этими строками. Метод расширения BeginDraw() отключает перерисовку экрана, вызов событий и выделение corel объектов во время выполнения. Метод расширения EndDraw() восстанавливает настройки.

В активном документе выполним перебор всех страниц. На каждой странице выполним перебор всех corel объектов для поиска текстовых объектов.

При нахождении текстовых объектов, вызывается метод ConvertToCurves() , который переводит этот corel объект в кривые.

Запустим выполнение. Для проверки кнопки “Text Convert to Curves” нужен открытый документ и текст в нем. Реализованный код работает с любыми текстовыми corel объектами, но если этот объект находится в группе объектов или в PowerClip преобразования в кривые не произойдет.

Для решения этой проблемы, разберем как Corel Draw представляет объекты в коде.

Класс corel.Shape содержит свойства и методы для взаимодействия с corel объектами. Свойство Type возвращает именованную константу которая определяет тип corel объекта. Если corel.Shape представляет группу corel объектов, свойство Type вернёт константу cdrGroupShape . Тогда обратившись к свойству Shapes , получим коллекцию corel объектов из группы.

Также с другими типами corel объектов. Если свойство Type возвращает cdrBitmapShape , то свойство Bitmap возвращает ссылку на картинку. Если свойство Type возвращает cdrGuidelineShape , свойство Guide возвращает ссылку на направляющую.

Узнать что corel объект – PowerClip так не получится. Чтобы проверить является ли corel объект PowerClip-ом, проверьте свойство PowerClip на null.

Вернемся к коду.

Выделим перебор corel объектов в два отдельных метода.

Метод MakeToAllPages перебирает все страницы документа.

Метод MakeToShapeRange рекурсивно перебирает переданную коллекцию corel объектов.

В первом условии проверяем является ли corel объект группой и если да, запускаем проверку corel объектов в группе. Во втором проверяем является ли corel объект PowerClip-ом и если да, запускаем проверку corel объектов которые он содержит. В третьем условии проверяем является ли corel объект текстом и если да, переводим его в кривые.

В методе Button_Click остается только вызов метода MakeToAllPages .

Запустим выполнение. Теперь текст обрабатывается в группах и PowerClip.

Но докер с одной кнопкой, это не интересно, добавим больше кнопок.

Добавим обработчики нажатия для этих кнопок.

Сейчас вся работа с corel объектом происходит в методе MakeToShapeRange . Но теперь нам надо находить не только текст, но и картинки и определять есть ли заливка или обводка у corel объекта. Чтобы много раз не копировать код метода MakeToShapeRange , воспользуемся делегатами.

Изменим сигнатуру метода MakeToAllPages() на MakeToAllPages(Action<corel.Shape> action) . Так как вся работа происходит в методе MakeToShapeRange изменим и его сигнатуру. А в методе MakeToAllPages изменим его вызов.

Не забываем изменить аргументы в рекурсивном вызове метода.

Теперь в методах обработчиках нажатия можно воспользоваться вызовом метода MakeToAllPages с анонимным делегатом в качестве аргумента.

Далее уточнения будут в комментариях кода.

На этом сеанс практической магии на сегодня закончен.

В следующей статье хочу описать создание докера для автоматического рисования меток реза на спуске.

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

Читайте также: