Что вам, вероятно, не хватает в отношении установки цветов объектов на ваших слайдах, так это то, что 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;