PowerPoint VBA - тема цветовой формулы - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу имитировать c, как PowerPoint автоматически выбирает цвет после использования 6 цветов акцента.

В vba вы можете установить 6 цветов темы следующим образом:

.ThemeColorScheme(msoThemeAccent1) = RGB(255, 0, 0)
.ThemeColorScheme(msoThemeAccent2) = RGB(0, 255, 0)
.ThemeColorScheme(msoThemeAccent3) = RGB(0, 255, 255)
.ThemeColorScheme(msoThemeAccent4) = RGB(255, 255, 0)
.ThemeColorScheme(msoThemeAccent5) = RGB(23, 255, 10)
.ThemeColorScheme(msoThemeAccent6) = RGB(23, 255, 100)

Цвета темы задаются здесь вручную:

Допустим, у меня есть чат с 15 сериями, powerpoint будет использовать первые 6 цветов аккаунта, но затем он автоматически выбирает rgbs, которые немного светлее или темнее на основе первых 6 цветов акцента. Я хочу эту формулу, чтобы я мог настроить ее по своему вкусу. Этот форум доступен где-нибудь?

1 Ответ

2 голосов
/ 20 апреля 2020

Алгоритмы преобразования цвета никогда не публиковались, но их достаточно легко вывести:

  1. Создайте образец диаграммы с таким количеством рядов данных, сколько вам нужно.
  2. Сохранить файл, измените окончание на .zip и распакуйте.
  3. Посмотрите на ppt / charts / chart1. xml

Офисные программы напрямую не преобразуют значения RGB. Вместо этого они применяют фильтры. Вот цветовая заливка, типичная для первых 6 серий:

<a:solidFill>
    <a:schemeClr val="accent1"/>
</a:solidFill>

Вторая группа из 6:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="60000"/>
    </a:schemeClr>
</a:solidFill>

Третья группа:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="80000"/>
        <a:lumOff val="20000"/>
    </a:schemeClr>
</a:solidFill>

Четвертая группа :

    <a:schemeClr val="accent1">
        <a:lumMod val="80000"/>
    </a:schemeClr>
</a:solidFill>

Пятая группа:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="60000"/>
        <a:lumOff val="40000"/>
    </a:schemeClr>
</a:solidFill>

Шестая группа:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="50000"/>
    </a:schemeClr>
</a:solidFill>

К сожалению, в VBA нет способа напрямую применить lumMod или lumOff , Вместо этого вам нужно применить параметры .PictureEffects , а затем выяснить, какой код PictureEffect создает необходимый визуальный эффект. msoEffectBrightnessContrast и msoEffectSaturation смогут установить те же значения цвета с некоторыми экспериментами. Вот перечисление Microsoft эффектов изображения: Перечисление MsoPictureEffectType (Office)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...