API-интерфейс для тем в новом Visio
Пост написан на основе статьи Джимом Саном, первоначально опубликованной здесь.
В предыдущей статье были представлены новые темы, варианты и стили нового Visio.
Благодаря этому пользователи могут не только легко и быстро создавать профессиональные диаграммы, но и имеют полный программный доступ к нужным функциям. В этой статье мы рассмотрим, как использовать новые методы API-интерфейса для усовершенствования внешнего вида любой диаграммы.
Дополнительные сведения о других новых API-интерфейсах см. в нашей статье «Новые API-интерфейсы в новом Visio». Полный список всех новых API можно найти в статье «Что нового для разработчиков в Visio 2013» на MSDN.
Работа с темами
Новый Visio поддерживает новые темы, варианты и стили тремя новыми способами: Page.SetTheme, Page.SetThemeVariant и Shape.SetQuickStyle. Эти методы позволяют разработчику задать тему для текущей страницы, применить вариант темы и настроить фигуру с использованием стиля.
Page.SetTheme (varThemeIndex, varColorScheme, varEffectScheme, varConnectorScheme, varFontScheme)
Настраивает указанные компоненты темы на данной странице. Аргумент varThemeIndex — это основной аргумент, применяющий одну из встроенных тем к заданной странице. Четыре другие дополнительных аргумента позволяют выполнить дальнейшую настройку элементов с использованием альтернативных определений цвета и стиля из других встроенных тем. Выбирая разные индексы для этих четырех дополнительных аргументов, можно создать уникальную комбинацию свойств, которые невозможно найти во встроенном списке. Все пять аргументов предложены в виде индексов, представляющих набор встроенных тем. Индексы всех пяти аргументов начинаются с 17 для «Visio тема 1» и завершаются 32 для «Visio тема 16». Обратите внимание, что эти значения индексов действуют только в предварительном построении и, вероятно, изменятся в окончательной версии выпуске.
Аргументы
- varThemeIndex: обязательный параметр, задающий индекс темы.
- varColorScheme: необязательный параметр, задающий индекс цветов, используемых в теме.
- varEffectScheme: необязательный параметр, задающий индекс стилей двухмерных фигур, используемых в теме.
- varConnectorScheme: необязательный параметр, задающий индекс стилей одномерных фигур, используемых в теме.
- varFontScheme: необязательный параметр, задающий индекс текстовых стилей, используемых в теме.
Page.SetThemeVariant(variantColor, variantStyle, embellishment)
Задает указанные индексы компонентов варианта и параметры надстрочных знаков для данной страницы. Вариант состоит из двух компонентов: цвет и стиль. Если одни и те же индексы используются для обоих компонентов, вариант доступен в коллекции «Варианты» на вкладке ленты «Конструктор». Если использовать разные индексы для каждого компонента, можно создать уникальный вариант, не встречающийся в пользовательском интерфейсе. Настройка надстрочных знаков соответствует настройкам всплывающего меню коллекции «Варианты». Возможны следующие варианты настроек: «низкая», «средняя» и «высокая». Индексы компонентов вариант начинаются от 0 («Вариант 1») и завершаются 3 («Вариант 4»). Индекс настройки надстрочных знаков начинается от 1 («низкая») и завершается 3 («высокая»).
Аргументы
- variantColor: обязательный параметр, задающий индекс цветов, используемых вариантом.
- variantStyle: обязательный параметр, задающий индекс стилей фигур, используемых вариантом (включая двухмерные и одномерные фигуры, а также фигуры соединителей).
- embellishment: необязательный аргумент, задающий индекс настройки надстрочных знаков.
Shape.SetQuickStyle(lineMatrix, fillMatrix, effectsMatrix, fontMatrix, lineColor, fillColor, shadowColor, fontColor)
Настраивает указанный стиль фигуры для заданной фигуры. Стили фигур регулируются восемью индексами, определяющими цвета и форматирование строк, заполнений, эффектов и текста. Все стили фигур из коллекции «Стили фигур» на вкладке ленты «Главная» можно настроить с использованием этого метода. Кроме того, этот метод позволяет управлять каждым индексом независимо и создавать уникальные комбинации стилей фигур, которые отсутствуют в данной коллекции.
Аргументы
- lineMatrix: задает индекс форматирования, определяющий свойства форматирования строк для извлечения (тип тире, толщина линии) из активной темы или варианта.
- fillMatrix: задает индекс форматирования, определяющий свойства форматирования заливки для извлечения (тип заполнения, точки градиента) из активной темы или варианта.
- effectsMatrix: задает индекс форматирования, определяющий свойства форматирования эффектов для извлечения (тени, рельеф) из активной темы или варианта.
- fontMatrix: задает индекс форматирования, определяющий свойства форматирования шрифтов для извлечения (стиль) из активной темы или варианта.
- lineColor: задает индекс цвета, определяющий цвет для извлечения из активной темы или варианта, который затем будет использоваться для форматирования строк.
- fillColor: задает индекс цвета, определяющий цвет для извлечения из активной темы или варианта, который затем будет использоваться для форматирования заливки.
- shadowColor: задает индекс цвета, определяющий цвет для извлечения из активной темы или варианта, который затем будет использоваться в тенях.
- fontColor: задает индекс цвета, определяющий цвет для извлечения из активной темы или варианта, который затем будет использоваться в тексте фигур.
Можно настроить стили фигур из раздела «Стили вариантов» или «Стили тем» коллекции «Стили фигур» на вкладке ленты «Главная».
Настройка стилей фигур из раздела «Стили вариантов»
Индексы стилей и цветов упорядочены слева направо, начиная со 100 для первого выбранного значения слева и завершаясь 103 для самого первого выбранного значения справа. Ниже представлены индексы для раздела «Стили вариантов», где индексы стилей представлены текстом синего цвета, а индексы цветов — текстом красного цвета.
Настройка стилей фигур из раздела «Стили тем»
Индексы стилей соответствуют строкам в разделе «Стили тем» коллекции «Стили фигур». Индексы стилей начинаются с 1 (самая верхняя строка) и заканчиваются 6 (самая нижняя строка). Индексы цвета соответствуют столбцам. Индексы цвета начинаются со 100 (самый левый столбец) и заканчиваются 106 (самый правый столбец). Ниже представлены индексы для раздела «Стили тем», где индексы стилей представлены текстом синего цвета, а индексы цветов — текстом красного цвета:
Опробуем!
Допустим, нам нужно отформатировать следующую диаграмму.
Воспользовавшись описанными выше методами, можно применить к этой диаграмме темы, варианты и стили фигур. Для каждого шага приводится фрагмент кода C# и снимок экрана, на котором показано, как этот код изменил диаграмму.
Примечание. Во фрагментах кода ниже страницей является активная страница для рисования.
Для начала применим тему к диаграмме, воспользовавшись методом SetTheme.
// Применить тему 16 Visio к странице диаграммы
page.SetTheme(32)
Получим следующий результат.
Во-вторых, применим третий вариант этой темы к диаграмме, воспользовавшись методом SetThemeVariant.
// Применить третий вариант к странице диаграммы
page.SetThemeVariant(2, 2);
Получим следующий результат.
Наконец, применим стиль фигуры к фигуре «Готовый продукт», чтобы выделить его относительно остальных частей диаграммы. Был выбран нижний правый стиль фигуры из раздела «Стили темы» в коллекции «Стили фигур», что в данной комбинации темы и варианта представляет собой ярко-оранжевый стиль фигуры со сплошной заливкой.
// Получить фигуру «Готовый продукт»
Visio.Shape finishedProductShape = page.Shapes.get_ItemU("Custom 3");
// Применить самый правый стиль фигуры на нижней строке
finishedProductShape.SetQuickStyle(
// Укажите индексы линии, заливки, эффекта и форматирования шрифта
6, 6, 6, 6,
// Указать индексы линии, заливки, тени и цветов шрифта. Также можно использовать целочисленные значения.
106, 106, 106, 106);
Получим следующий результат.
Обобщение
Новая функция темы, варианты и стили позволяет конечным пользователям и разработчикам быстро и легко форматировать диаграммы, которые выглядят профессионально и современно. Нам важны отзывы разработчиков о представленных функциях API-интерфейса.
Обсудить Visio также можно на форуме ответов Visio и форуме Visio MSDN.