Форматирование фигур PowerPoint на C++
Обзор
В PowerPoint вы можете добавлять фигуры на слайды. Поскольку фигуры состоят из линий, их можно форматировать, изменяя или применяя эффекты к их контурам. Кроме того, вы можете форматировать фигуры, указывая параметры, контролирующие заливку их внутренней части.

Aspose.Slides for C++ предоставляет интерфейсы и методы, позволяющие форматировать фигуры с теми же параметрами, что доступны в PowerPoint.
Форматирование линий
С помощью Aspose.Slides вы можете задать пользовательский стиль линии для фигуры. Ниже перечислены шаги процедуры:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Установите стиль линии фигуры.
- Установите толщину линии.
- Установите стиль штриха линии.
- Установите цвет линии для фигуры.
- Сохраните изменённую презентацию как файл PPTX.
В следующем примере показано, как форматировать прямоугольный AutoShape:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте автофигуру типа Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 150, 150, 75);
// Установите цвет заливки для прямоугольной фигуры.
shape->get_FillFormat()->set_FillType(FillType::NoFill);
// Примените форматирование к линиям прямоугольника.
shape->get_LineFormat()->set_Style(LineStyle::ThickThin);
shape->get_LineFormat()->set_Width(7);
shape->get_LineFormat()->set_DashStyle(LineDashStyle::Dash);
// Установите цвет линии прямоугольника.
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
// Сохраните файл PPTX на диск.
presentation->Save(u"formatted_lines.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Форматирование стилей соединения
Вот три варианта типа соединения:
- Round
- Miter
- Bevel
По умолчанию PowerPoint использует настройку Round, когда соединяет две линии под углом (например, в углу фигуры). Однако если вы рисуете фигуру с острыми углами, вам может подойти вариант Miter.

В следующем примере кода на C++ показано, как были созданы три прямоугольника (как на изображении выше) с использованием настроек соединения Miter, Bevel и Round:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте три автофигуры типа Rectangle.
auto shape1 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 20, 20, 150, 75);
auto shape2 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 210, 20, 150, 75);
auto shape3 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 20, 135, 150, 75);
// Установите цвет заливки для каждой прямоугольной фигуры.
shape1->get_FillFormat()->set_FillType(FillType::Solid);
shape1->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
shape2->get_FillFormat()->set_FillType(FillType::Solid);
shape2->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
shape3->get_FillFormat()->set_FillType(FillType::Solid);
shape3->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
// Установите толщину линии.
shape1->get_LineFormat()->set_Width(15);
shape2->get_LineFormat()->set_Width(15);
shape3->get_LineFormat()->set_Width(15);
// Установите цвет линии для каждого прямоугольника.
shape1->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape1->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
shape2->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape2->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
shape3->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape3->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
// Установите стиль соединения.
shape1->get_LineFormat()->set_JoinStyle(LineJoinStyle::Miter);
shape2->get_LineFormat()->set_JoinStyle(LineJoinStyle::Bevel);
shape3->get_LineFormat()->set_JoinStyle(LineJoinStyle::Round);
// Добавьте текст к каждому прямоугольнику.
shape1->get_TextFrame()->set_Text(u"Miter Join Style");
shape2->get_TextFrame()->set_Text(u"Bevel Join Style");
shape3->get_TextFrame()->set_Text(u"Round Join Style");
// Сохраните файл PPTX на диск.
presentation->Save(u"join_styles.pptx", SaveFormat::Pptx);
presentation->Dispose();
Градиентная заливка
В PowerPoint градиентная заливка — это параметр форматирования, позволяющий применять плавный переход цветов к фигуре. Например, можно задать два и более цветов, где один постепенно переходит в другой.
Как применить градиентную заливку к фигуре с помощью Aspose.Slides:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Установите свойство FillType фигуры в значение
Gradient. - Добавьте два желаемых цвета с определёнными позициями, используя методы
Addиз коллекции остановок градиента, доступной через интерфейс IGradientFormat . - Сохраните изменённую презентацию как файл PPTX.
В следующем примере кода на C++ показано, как применить градиентный эффект к эллипсу:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте автофигуру типа Ellipse.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Ellipse, 50, 50, 150, 75);
// Примените градиентное форматирование к эллипсу.
shape->get_FillFormat()->set_FillType(FillType::Gradient);
shape->get_FillFormat()->get_GradientFormat()->set_GradientShape(GradientShape::Linear);
// Установите направление градиента.
shape->get_FillFormat()->get_GradientFormat()->set_GradientDirection(GradientDirection::FromCorner2);
// Добавьте две градиентные остановки.
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(1.0f, PresetColor::Purple);
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(0.0f, PresetColor::Red);
// Сохраните файл PPTX на диск.
presentation->Save(u"gradient_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Заливка паттерном
В PowerPoint заливка паттерном — это параметр, позволяющий применить двухцветный дизайн (точки, полосы, перекрёстные штрихи или шахматы) к фигуре. Вы можете задать собственные цвета переднего и заднего плана паттерна.
Aspose.Slides предоставляет более 45 предопределённых стилей паттернов, которые можно применить к фигурам для улучшения визуального восприятия презентаций. Даже после выбора предопределённого паттерна вы можете указать точные цвета, которые он будет использовать.
Как применить заливку паттерном к фигуре с помощью Aspose.Slides:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Установите свойство FillType фигуры в значение
Pattern. - Выберите стиль паттерна из предопределённых вариантов.
- Установите Background Color паттерна.
- Установите Foreground Color паттерна.
- Сохраните изменённую презентацию как файл PPTX.
В следующем примере кода на C++ показано, как применить заливку паттерном к прямоугольнику:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте автофигуру типа Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Установите тип заливки в Pattern.
shape->get_FillFormat()->set_FillType(FillType::Pattern);
// Установите стиль паттерна.
shape->get_FillFormat()->get_PatternFormat()->set_PatternStyle(PatternStyle::Trellis);
// Установите фон и передний цвет паттерна.
shape->get_FillFormat()->get_PatternFormat()->get_BackColor()->set_Color(Color::get_LightGray());
shape->get_FillFormat()->get_PatternFormat()->get_ForeColor()->set_Color(Color::get_Yellow());
// Сохраните файл PPTX на диск.
presentation->Save(u"pattern_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Заливка изображением
В PowerPoint заливка изображением — это параметр, позволяющий вставить изображение внутрь фигуры, сделав его фоном фигуры.
Как использовать Aspose.Slides для применения заливки изображением к фигуре:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Установите свойство FillType фигуры в значение
Picture. - Установите режим заливки изображения в
Tile(или другой предпочтительный режим). - Создайте объект IPPImage из изображения, которое хотите использовать.
- Передайте изображение методу
ISlidesPicture.set_Image. - Сохраните изменённую презентацию как файл PPTX.
Допустим, у нас есть файл «lotus.png» со следующим изображением:

В следующем примере кода на C++ показано, как заполнить фигуру изображением:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте автофигуру типа Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 255, 130);
// Установите тип заливки в Picture.
shape->get_FillFormat()->set_FillType(FillType::Picture);
// Установите режим заливки изображением.
shape->get_FillFormat()->get_PictureFillFormat()->set_PictureFillMode(PictureFillMode::Tile);
// Загрузите изображение и добавьте его в ресурсы презентации.
auto image = Images::FromFile(u"lotus.png");
auto picture = presentation->get_Images()->AddImage(image);
image->Dispose();
// Установите изображение.
shape->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(picture);
// Сохраните файл PPTX на диск.
presentation->Save(u"picture_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Мозаика изображения в качестве текстуры
Если нужно задать мозаичное изображение в качестве текстуры и настроить её параметры, используйте следующие методы интерфейса IPictureFillFormat и класса PictureFillFormat :
- set_PictureFillMode — задаёт режим заливки изображения:
TileилиStretch. - set_TileAlignment — определяет выравнивание плиток внутри фигуры.
- set_TileFlip — управляет зеркалированием плитки по горизонтали, вертикали или обоим направлениям.
- set_TileOffsetX — задаёт горизонтальное смещение плитки (в пунктах) от начала фигуры.
- set_TileOffsetY — задаёт вертикальное смещение плитки (в пунктах) от начала фигуры.
- set_TileScaleX — определяет горизонтальный масштаб плитки в процентах.
- set_TileScaleY — определяет вертикальный масштаб плитки в процентах.
В следующем примере кода показано, как добавить прямоугольник с мозаичной заливкой изображением и настроить параметры плитки:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto firstSlide = presentation->get_Slide(0);
// Добавьте автофигуру прямоугольника.
auto shape = firstSlide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 190, 95);
// Установите тип заливки фигуры в Picture.
shape->get_FillFormat()->set_FillType(FillType::Picture);
// Загрузите изображение и добавьте его в ресурсы презентации.
auto sourceImage = Images::FromFile(u"lotus.png");
auto presentationImage = presentation->get_Images()->AddImage(sourceImage);
sourceImage->Dispose();
// Присвойте изображение фигуре.
auto pictureFillFormat = shape->get_FillFormat()->get_PictureFillFormat();
pictureFillFormat->get_Picture()->set_Image(presentationImage);
// Настройте режим заливки изображением и свойства мозаики.
pictureFillFormat->set_PictureFillMode(PictureFillMode::Tile);
pictureFillFormat->set_TileOffsetX(-32);
pictureFillFormat->set_TileOffsetY(-32);
pictureFillFormat->set_TileScaleX(50);
pictureFillFormat->set_TileScaleY(50);
pictureFillFormat->set_TileAlignment(RectangleAlignment::BottomRight);
pictureFillFormat->set_TileFlip(TileFlip::FlipBoth);
// Сохраните файл PPTX на диск.
presentation->Save(u"tile.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Сплошная заливка цветом
В PowerPoint сплошная заливка цветом — параметр, который заполняет фигуру одним однородным цветом без градиентов, текстур или паттернов.
Чтобы применить сплошную заливку к фигуре с помощью Aspose.Slides, выполните следующие действия:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Установите свойство FillType фигуры в значение
Solid. - Укажите желаемый цвет заливки.
- Сохраните изменённую презентацию как файл PPTX.
В следующем примере кода на C++ показано, как применить сплошную заливку к прямоугольнику на слайде PowerPoint:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте автофигуру типа Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Установите тип заливки в Solid.
shape->get_FillFormat()->set_FillType(FillType::Solid);
// Установите цвет заливки.
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Yellow());
// Сохраните файл PPTX на диск.
presentation->Save(u"solid_color_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Установка прозрачности
В PowerPoint, применяя сплошную, градиентную, картинную или текстурную заливку к фигурам, можно задать уровень прозрачности, контролирующий степень непрозрачности заливки. Чем выше значение прозрачности, тем более «прозрачной» будет фигура, позволяя видеть фон или объекты за ней.
Aspose.Slides позволяет установить уровень прозрачности, изменяя альфа‑компонент цвета, используемого для заливки. Как это сделать:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Установите свойство FillType в
Solid. - Используйте
Color, задав цвет с необходимой прозрачностью (компонентalphaконтролирует прозрачность). - Сохраните презентацию.
В следующем примере кода на C++ показано, как задать прозрачный цвет заливки для прямоугольника:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте автофигуру прямоугольника (сплошную).
auto solidShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Добавьте автофигуру прямоугольника с прозрачностью поверх сплошной фигуры.
auto transparentShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 80, 80, 150, 75);
transparentShape->get_FillFormat()->set_FillType(FillType::Solid);
transparentShape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::FromArgb(204, 255, 255, 0));
// Сохраните файл PPTX на диск.
presentation->Save(u"shape_transparency.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Поворот фигур
Aspose.Slides позволяет поворачивать фигуры в презентациях PowerPoint. Это может быть полезно при расположении визуальных элементов с определёнными требованиями к выравниванию или дизайну.
Чтобы повернуть фигуру на слайде, выполните следующие шаги:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Установите свойство поворота фигуры на требуемый угол.
- Сохраните презентацию.
В следующем примере кода на C++ показано, как повернуть фигуру на 5 градусов:
// Создайте экземпляр класса Presentation, представляющего файл презентации.
auto presentation = MakeObject<Presentation>();
// Получите первый слайд.
auto slide = presentation->get_Slide(0);
// Добавьте автофигуру типа Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Поверните фигуру на 5 градусов.
shape->set_Rotation(5);
// Сохраните файл PPTX на диск.
presentation->Save(u"shape_rotation.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Добавление 3D‑эффектов фаски
Aspose.Slides позволяет применять к фигурам 3D‑эффекты фаски, настроив их свойства ThreeDFormat .
Чтобы добавить 3D‑эффекты фаски к фигуре, выполните следующие действия:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Настройте свойства ThreeDFormat фигуры, задав параметры фаски.
- Сохраните презентацию.
В следующем примере кода на C++ показано, как применить 3D‑эффекты фаски к фигуре:
// Создайте экземпляр класса Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Добавьте фигуру на слайд.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Ellipse, 50, 50, 100, 100);
shape->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Green());
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Orange());
shape->get_LineFormat()->set_Width(2.0);
// Set the shape's ThreeDFormat properties.
shape->get_ThreeDFormat()->set_Depth(4.0);
shape->get_ThreeDFormat()->get_BevelTop()->set_BevelType(BevelPresetType::Circle);
shape->get_ThreeDFormat()->get_BevelTop()->set_Height(6);
shape->get_ThreeDFormat()->get_BevelTop()->set_Width(6);
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::OrthographicFront);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::ThreePt);
shape->get_ThreeDFormat()->get_LightRig()->set_Direction(LightingDirection::Top);
// Сохраните презентацию в файл PPTX.
presentation->Save(u"3D_bevel_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Добавление 3D‑поворотов
Aspose.Slides позволяет применять к фигурам 3D‑повороты, настроив их свойства ThreeDFormat .
Чтобы применить 3D‑поворот к фигуре:
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Добавьте IAutoShape на слайд.
- Используйте методы set_CameraType и set_LightType для определения 3D‑поворота.
- Сохраните презентацию.
В следующем примере кода на C++ показано, как применить 3D‑повороты к фигуре:
// Создайте экземпляр класса Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
shape->get_TextFrame()->set_Text(u"Hello, Aspose!");
shape->get_ThreeDFormat()->set_Depth(6);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(40, 35, 20);
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::IsometricLeftUp);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::Balanced);
// Сохраните презентацию в файл PPTX.
presentation->Save(u"3D_rotation_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();
Результат:

Сброс форматирования
В следующем примере кода на C++ показано, как сбросить форматирование слайда и вернуть позицию, размер и форматирование всех фигур‑заполнителей на LayoutSlide к их значениям по умолчанию:
auto presentation = MakeObject<Presentation>(u"sample.pptx");
for (auto&& slide : presentation->get_Slides())
{
// Сбросьте каждую фигуру на слайде, имеющую заполнитель в макете.
slide->Reset();
}
presentation->Save(u"reset_formatting.pptx", SaveFormat::Pptx);
presentation->Dispose();
FAQ
Влияет ли форматирование фигур на конечный размер файла презентации?
Практически не влияет. Большую часть объёма занимают встроенные изображения и медиа, тогда как параметры фигур (цвета, эффекты, градиенты) сохраняются как метаданные и почти не увеличивают размер файла.
Как определить фигуры на слайде с одинаковым форматированием, чтобы их сгруппировать?
Сравните ключевые параметры форматирования каждой фигуры — параметры заливки, линий и эффектов. Если все соответствующие значения совпадают, считайте их стили идентичными и логически группируйте такие фигуры, что упрощает дальнейшее управление стилями.
Можно ли сохранить набор пользовательских стилей фигур в отдельный файл для повторного использования в других презентациях?
Да. Сохраните образцы фигур с требуемыми стилями в шаблоне презентации или файле‑шаблоне .POTX. При создании новой презентации откройте шаблон, клонируйте нужные стилизованные фигуры и применяйте их форматирование где необходимо.