Как прочитать настройки цвета (Color Tone, Recolor), доступные в разделе «Инструменты для работы с изображениями» в PowerPoint VSTO Addin? - PullRequest
0 голосов
/ 10 января 2019

Я работаю над надстройкой VSTO, которая добавляет изображение диаграммы на слайд. Диаграмма взята из библиотеки WinForms DataVisualization.Charting. Мы используем это вместо собственных диаграмм PowerPoint по соображениям производительности.

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

enter image description here

Я пытался найти его, даже пытался найти его, посмотрев на свойство Shape.PictureFormat и на то, как оно меняется при переходе с ленты.

Дополнительная информация

С помощью боковой панели «Форматировать изображение» я смог увидеть, что обновляется, когда мы что-то меняем, в раскрывающемся списке цветов.

Format Picture sidebar pane

Например, Насыщенность цвета изменяет насыщенность (третье в группе цветов на боковой панели).
Color Tone изменяет температуру, но Recolor ничего не меняет, и, к сожалению, это именно то, что я хочу сохранить при обновлении изображения.

После некоторых исследований я обнаружил, что Recolor метод существует , но он доступен только для приложения Office Publisher. При более глубоком изучении файла презентации я обнаружил, что внутри тега изображения есть дополнительный тег с файлом slide.xml.

<a:duotone>
    <a:prstClr val="black"/>
    <a:schemeClr val="accent3">
        <a:tint val="45000"/>
        <a:satMod val="400000"/>
    </a:schemeClr>
</a:duotone>

Но все еще ищите, как я могу получить эту информацию во время выполнения и использовать ее.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вот решение, которое я использовал для всех, кому это может понадобиться.

Чтобы скопировать форматирование изображения, мы можем использовать Shape.PickUp в источнике и Shape.Apply в месте назначения, чтобы скопировать большую часть форматирования.

Shape.PickUp - Копирует форматирование указанной фигуры. Используйте метод Apply, чтобы применить скопированное форматирование к другой фигуре.

Shape.Apply - Применяется к указанному форматированию фигуры, скопированному с помощью метода PickUp.

0 голосов
/ 11 января 2019

Следующий код VBA демонстрирует некоторую модель объекта цветового форматирования для формы PowerPoint. В частности, для получения насыщенности и цветового тона требуется PictureEffect.EffectParameter. EffectParameter имеет свойства Name и Value, которые отражают, какая насыщенность и цветовая температура используются (чтение / запись).

Sub ShapeColorFormatting()
    Dim PP As Presentation
    Dim s As Slide
    Dim shp As Shape
    Dim b As Double, c As Long 'MsoPictureColorType
    Dim lPE As Long, lEp As Long, p As Long, e As Long
    Dim pe As PictureEffect, ep As EffectParameter

    Set PP = ActivePresentation
    Set s = PP.Slides(1)
    Set shp = s.Shapes(s.Shapes.Count)
    Debug.Print shp.Name

    b = shp.PictureFormat.Brightness
    c = shp.PictureFormat.ColorType

    lPE = shp.Fill.PictureEffects.Count
    For p = 1 To lPE
        Set pe = shp.Fill.PictureEffects(p)
        For e = 1 To pe.EffectParameters.Count
            Set ep = pe.EffectParameters(e)
            Debug.Print ep.Name, ep.Value
        Next e
    Next p

    Debug.Print shp.Fill.ForeColor.TintAndShade, _
                shp.Fill.BackColor.ObjectThemeColor, _
                shp.Fill.ForeColor.ObjectThemeColor
End Sub
...