Как изменить цвет отдельных элементов графика в powerpoint - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть проблема, предположим, что диаграмма (со всеми необходимыми данными) уже вставлена ​​в слайд PowerPoint. Теперь я хочу сделать, если человек нажимает на заголовок диаграммы, столбцы / столбцы, легенду или фон диаграммы, заднюю частьцвет этого элемента должен измениться, скажем, на черный.В приложении Word я могу сделать то же самое с

application.Selection.InlineShapes[1].Fill.ForeColor.RGB = setColor;

Как сделать то же самое в powerpoint.

То, что я пробовал в powerpoint:

application.ActiveWindow.Selection.ShapeRange[1].Fill.BackColor.RGB = 0;

Но этовсегда меняет цвет фона диаграммы и Selection.ShapeRange[1].Name всегда является "заполнителем".

Хотите изменить цвет только одного элемента.Если пользователь нажимает на 1 полосу, цвет этой полосы должен измениться на черный, и ни один другой элемент не должен измениться так же, если щелкнуть заголовок диаграммы, фон только изменится.Я новичок в .net и помогу в этом.И я думаю, что могу объяснить свою озабоченность.Последнее, что я попробовал, это

ColorStyle colorstyle2 = MyAddin.AddinModule.CurrentInstance.SelectedColorStyle;
int setColor = ColorTranslator.ToOle(System.Drawing.Color.FromArgb(colorstyle2.R, colorstyle2.G, colorstyle2.B));
int position = app.ActiveWindow.Selection.ShapeRange.ZOrderPosition;
Slide slide2 = (Slide)app.ActiveWindow.View.Slide;// SELECTS CHART FROM SHAPE RANGE AS SELECTION HAS SHAPERANGE not shape
powerPoint.Shape s = slide2.Shapes[position];
if (s.HasChart==MsoTriState.msoTrue)
{
    object cht = s.GetType().InvokeMember("Chart", BindingFlags.GetProperty, null, (object)s, null);
    object chtFormat = cht.GetType().InvokeMember("Format", BindingFlags.GetProperty, null, (object)cht, null);
    object chtFill = cht.GetType().InvokeMember("Fill", BindingFlags.GetProperty, null, (object)chtFormat, null);
    object chtBackcolor = chtFill.GetType().InvokeMember("Backcolor", BindingFlags.GetProperty, null, (object)chtFill, null);
    object[] args = { 0 };//also used {0} here
    object chtRGB = chtBackcolor.GetType().InvokeMember("RGB", BindingFlags.SetProperty, null, (object)chtBackcolor, args);
}
...