Интеграция с C # и PowerPoint 2010 - PullRequest
0 голосов
/ 12 ноября 2010

Я делаю «что-то» (я пока не знаю, как это определить), и что делает, это создает pptx презентацию и некоторые слайды ... но я сталкиваюсь с некоторыми проблемами: я могу 'изменить цвет фона / изображение моих слайдов и текстовых полей ... и я не могу понять это ... Кто-нибудь может мне помочь?

Ответы [ 3 ]

2 голосов
/ 09 декабря 2013

У меня была та же проблема, пока я не обнаружил, что вам нужно установить для slide.FollowMasterBackground значение false:

Slide slide = presentation.Slides.AddSlide(presentation.Slides.Count + 1, layout);
slide.FollowMasterBackground = Microsoft.Office.Core.MsoTriState.msoFalse;
slide.Background.Fill.ForeColor.RGB = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.DarkBlue);
2 голосов
/ 12 ноября 2010

Что вам, вероятно, не хватает в отношении установки цветов объектов на ваших слайдах, так это то, что COM Interop воспринимает цвета немного иначе, чем то, к чему вы привыкли в .NET Framework.NET Framework, мы представляем цвета, используя метко названную структуру Color , которая инкапсулирует значения для альфа-канала цвета и его красных, зеленых и синих компонентов.Однако COM Interop представляет цвета в виде значения Integer в формате BGR.Это означает, что значения компонентов для красного, зеленого и синего на самом деле сохраняются как синий, зеленый и красный.

Однако .NET Framework предоставляет простой встроенный способ преобразования между этими двумя цветамиформаты: ColorTranslator.ToOle и ColorTranslator.FromOle.Таким образом, вы сможете изменить цвет фона слайда PowerPoint, используя следующий код:

//Create a color
Color myBackgroundColor = Color.LimeGreen;

//Translate to an OLE color
int oleColor = ColorTranslator.ToOle(myBackgroundColor);

//Set the background color of the slide
mySlide.Background.Fill.ForeColor.RGB = oleColor;

И наоборот, чтобы получить текущий цвет фона в виде цвета .NET, вам нужно будет выполнитьнапротив:

//Get the current background color of the slide
int oleColor = mySlide.Background.Fill.ForeColor.RGB;

//Translate to a .NET Color
color myBackgroundColor = ColorTranslator.FromOle(oleColor);

И, конечно, если вы хотите установить цвет фигуры (цвет заливки), вы можете просто установить ее свойство ForeColor, например:

//Create a color
Color myForegroundColor = Color.Aqua;

//Translate to an OLE color
int oleColor = ColorTranslator.ToOle(myForegroundColor );

//Set the foreground color of a shape
myShape.Fill.ForeColor.RGB = oleColor;
0 голосов
/ 18 ноября 2010

Я разобрался ... чтобы изменить фон слайда, сначала нужно вызвать метод Fill.Background (), прежде чем менять цвет / рисунок !!! всем спасибо за помощь

...