API-интерфейс для тем в новом Visio

Пост написан на основе статьи Джимом Саном, первоначально опубликованной здесь.

В предыдущей статье были представлены новые темы, варианты и стили нового Visio.

Themes in the new 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: задает индекс цвета, определяющий цвет для извлечения из активной темы или варианта, который затем будет использоваться в тексте фигур.

Можно настроить стили фигур из раздела «Стили вариантов» или «Стили тем» коллекции «Стили фигур» на вкладке ленты «Главная».

Shape Styles gallery in the new Visio

Настройка стилей фигур из раздела «Стили вариантов»

Индексы стилей и цветов упорядочены слева направо, начиная со 100 для первого выбранного значения слева и завершаясь 103 для самого первого выбранного значения справа. Ниже представлены индексы для раздела «Стили вариантов», где индексы стилей представлены текстом синего цвета, а индексы цветов — текстом красного цвета.

Variant Styles indexes

Настройка стилей фигур из раздела «Стили тем»

Индексы стилей соответствуют строкам в разделе «Стили тем» коллекции «Стили фигур». Индексы стилей начинаются с 1 (самая верхняя строка) и заканчиваются 6 (самая нижняя строка). Индексы цвета соответствуют столбцам. Индексы цвета начинаются со 100 (самый левый столбец) и заканчиваются 106 (самый правый столбец). Ниже представлены индексы для раздела «Стили тем», где индексы стилей представлены текстом синего цвета, а индексы цветов — текстом красного цвета:

Theme Styles indexes

Опробуем!

Допустим, нам нужно отформатировать следующую диаграмму.

Diagram to be formatted

Воспользовавшись описанными выше методами, можно применить к этой диаграмме темы, варианты и стили фигур. Для каждого шага приводится фрагмент кода C# и снимок экрана, на котором показано, как этот код изменил диаграмму.

Примечание.  Во фрагментах кода ниже страницей является активная страница для рисования.

Для начала применим тему к диаграмме, воспользовавшись методом SetTheme.

// Применить тему 16 Visio к странице диаграммы

page.SetTheme(32)

Получим следующий результат.

Diagram after applying theme

Во-вторых, применим третий вариант этой темы к диаграмме, воспользовавшись методом SetThemeVariant.

// Применить третий вариант к странице диаграммы

page.SetThemeVariant(2, 2);

Получим следующий результат.

Diagram after applying variant

Наконец, применим стиль фигуры к фигуре «Готовый продукт», чтобы выделить его относительно остальных частей диаграммы. Был выбран нижний правый стиль фигуры из раздела «Стили темы» в коллекции «Стили фигур», что в данной комбинации темы и варианта представляет собой ярко-оранжевый стиль фигуры со сплошной заливкой.

// Получить фигуру «Готовый продукт»

Visio.Shape finishedProductShape = page.Shapes.get_ItemU("Custom 3");

// Применить самый правый стиль фигуры на нижней строке

finishedProductShape.SetQuickStyle(

// Укажите индексы линии, заливки, эффекта и форматирования шрифта

6, 6, 6, 6,

// Указать индексы линии, заливки, тени и цветов шрифта. Также можно использовать целочисленные значения.

106, 106, 106, 106);

Получим следующий результат.

Diagram after applying style

Обобщение

Новая функция темы, варианты и стили позволяет конечным пользователям и разработчикам быстро и легко форматировать диаграммы, которые выглядят профессионально и современно. Нам важны отзывы разработчиков о представленных функциях API-интерфейса.

Обсудить Visio также можно на форуме ответов Visio и форуме Visio MSDN.