Gerenciar SmartArt em Apresentações PowerPoint Usando C++
Visão geral
SmartArt é um diagrama do PowerPoint composto por nós, formas de nó e um layout. Com Aspose.Slides para C++, você pode criar SmartArt, ler texto de seus nós, alterar seu layout, inspecionar nós ocultos, configurar layouts de organogramas e criar organogramas de imagens.
Obter texto de um objeto SmartArt
Um nó SmartArt pode conter uma ou mais formas. Para ler o texto visível, itere através de ISmartArt::get_AllNodes, então leia o ITextFrame retornado por ISmartArtShape::get_TextFrame.
auto presentation = System::MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shape(0);
if (System::ObjectExt::Is<ISmartArt>(shape))
{
auto smartArt = System::ExplicitCast<ISmartArt>(shape);
for (int nodeIndex = 0; nodeIndex < smartArt->get_AllNodes()->get_Count(); nodeIndex++)
{
auto node = smartArt->get_AllNodes()->idx_get(nodeIndex);
for (int shapeIndex = 0; shapeIndex < node->get_Shapes()->get_Count(); shapeIndex++)
{
auto nodeShape = node->get_Shape(shapeIndex);
if (nodeShape->get_TextFrame() != nullptr)
{
System::Console::WriteLine(nodeShape->get_TextFrame()->get_Text());
}
}
}
}
presentation->Dispose();
Alterar o tipo de layout de um objeto SmartArt
O layout do SmartArt controla como os nós são organizados e conectados. O exemplo a seguir cria um objeto SmartArt com o valor BasicBlockList de SmartArtLayoutType, altera para o valor BasicProcess e salva a apresentação.
auto presentation = System::MakeObject<Presentation>();
auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
10.0f, 10.0f, 400.0f, 300.0f, SmartArtLayoutType::BasicBlockList);
smartArt->set_Layout(SmartArtLayoutType::BasicProcess);
presentation->Save(u"ChangeSmartArtLayout_out.pptx", SaveFormat::Pptx);
presentation->Dispose();
Verificar se um nó SmartArt está oculto
ISmartArtNode::get_IsHidden indica se o nó está oculto no modelo de dados do SmartArt. Nós ocultos podem existir na estrutura mesmo quando o layout selecionado não os exibe como elementos visíveis do diagrama.
O exemplo a seguir adiciona um nó a um objeto SmartArt que usa o valor RadialCycle de SmartArtLayoutType e verifica o estado de ocultação do nó.
auto presentation = System::MakeObject<Presentation>();
auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
10.0f, 10.0f, 400.0f, 300.0f, SmartArtLayoutType::RadialCycle);
auto node = smartArt->get_AllNodes()->AddNode();
bool isHidden = node->get_IsHidden();
if (isHidden)
{
System::Console::WriteLine(u"The node is hidden in the SmartArt data model.");
}
presentation->Save(u"CheckSmartArtHiddenProperty_out.pptx", SaveFormat::Pptx);
presentation->Dispose();
Obter ou definir o layout do organograma
Para diagramas SmartArt que utilizam um layout de organograma, ISmartArtNode::get_OrganizationChartLayout e ISmartArtNode::set_OrganizationChartLayout definem como os nós filhos são organizados sob um nó pai. Por exemplo, você pode definir os nós filhos para pendurar à esquerda, à direita ou em ambos os lados, dependendo do OrganizationChartLayoutType selecionado.
O exemplo a seguir cria um organograma e define o layout do primeiro nó para o valor LeftHanging de OrganizationChartLayoutType.
auto presentation = System::MakeObject<Presentation>();
auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
10.0f, 10.0f, 400.0f, 300.0f, SmartArtLayoutType::OrganizationChart);
auto rootNode = smartArt->get_Node(0);
rootNode->set_OrganizationChartLayout(OrganizationChartLayoutType::LeftHanging);
presentation->Save(u"OrganizationChartLayout_out.pptx", SaveFormat::Pptx);
presentation->Dispose();
Criar um organograma de imagens
Um organograma de imagens é um layout SmartArt projetado para diagramas hierárquicos que incluem marcadores de posição de imagem. Use o valor PictureOrganizationChart de SmartArtLayoutType ao adicionar o objeto SmartArt a um slide.
auto presentation = System::MakeObject<Presentation>();
auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
0.0f, 0.0f, 400.0f, 400.0f, SmartArtLayoutType::PictureOrganizationChart);
presentation->Save(u"PictureOrganizationChart_out.pptx", SaveFormat::Pptx);
presentation->Dispose();
Perguntas frequentes
O SmartArt oferece suporte a espelhamento ou inversão para idiomas RTL?
Sim. O método SmartArt::set_IsReversed altera a direção do diagrama de esquerda para a direita para direita para a esquerda, ou o inverso, quando o layout SmartArt selecionado suporta a reversão.
Como posso copiar um SmartArt para o mesmo slide ou para outra apresentação preservando a formatação?
Você pode clonar a forma SmartArt com ShapeCollection::AddClone ou clonar o slide inteiro que contém o SmartArt. Ambas as abordagens preservam o tamanho, a posição e a formatação.
Como faço para renderizar o SmartArt em uma imagem raster para visualização ou exportação para a web?
Renderize o slide ou a apresentação inteira para PNG ou JPEG. O SmartArt é renderizado como parte do slide.
Como posso encontrar um objeto SmartArt específico em um slide se houver vários?
Defina um valor distinto em Shape::set_AlternativeText ou Shape::set_Name na forma SmartArt, procure esse valor em BaseSlide::get_Shapes, e então verifique se a forma correspondente é um ISmartArt.