Melhore suas Apresentações com AutoFit em C++
Introdução
Por padrão, ao inserir uma caixa de texto, o Microsoft PowerPoint usa a configuração Resize shape to fix text para a caixa de texto—ele redimensiona automaticamente a caixa de texto para garantir que seu conteúdo sempre caiba nela.

- Quando o texto na caixa de texto se torna mais longo ou maior, o PowerPoint aumenta automaticamente a caixa de texto—aumenta sua altura—para permitir que mais texto seja exibido.
- Quando o texto na caixa de texto se torna mais curto ou menor, o PowerPoint reduz automaticamente a caixa de texto—diminui sua altura—para eliminar espaço redundante.
No PowerPoint, estes são os 4 parâmetros ou opções importantes que controlam o comportamento de autofit para uma caixa de texto:
- Do not Autofit
- Shrink text on overflow
- Resize shape to fit text
- Wrap text in shape.

O Aspose.Slides for C++ oferece opções semelhantes—alguns métodos da classe TextFrameFormat—que permitem controlar o comportamento de autofit para caixas de texto em apresentações.
Resize a Shape to Fit Text
Se você deseja que o texto em uma caixa sempre caiba nela após alterações no conteúdo, deve usar a opção Resize shape to fix text. Para especificar essa configuração, defina a propriedade AutofitType (da classe TextFrameFormat) como Shape.

Este código C++ mostra como especificar que um texto deve sempre caber em sua caixa em uma apresentação PowerPoint:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
auto autoShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 30.0f, 30.0f, 350.0f, 100.0f);
auto textFrame = autoShape->get_TextFrame();
auto portion = System::MakeObject<Portion>(u"lorem ipsum...");
auto fillFormat = portion->get_PortionFormat()->get_FillFormat();
fillFormat->get_SolidFillColor()->set_Color(Color::get_Black());
fillFormat->set_FillType(FillType::Solid);
textFrame->get_Paragraphs()->idx_get(0)->get_Portions()->Add(portion);
auto textFrameFormat = textFrame->get_TextFrameFormat();
textFrameFormat->set_AutofitType(TextAutofitType::Shape);
pres->Save(u"Output-presentation.pptx", SaveFormat::Pptx);
Se o texto ficar mais longo ou maior, a caixa de texto será redimensionada automaticamente (aumentando a altura) para garantir que todo o texto caiba. Se o texto ficar mais curto, o processo inverso ocorrerá.
Do Not Autofit
Se você quer que uma caixa de texto ou forma mantenha suas dimensões independentemente das alterações no texto que contém, deve usar a opção Do not Autofit. Para especificar essa configuração, defina a propriedade AutofitType (da classe TextFrameFormat) como None.

Este código C++ mostra como especificar que uma caixa de texto deve sempre manter suas dimensões em uma apresentação PowerPoint:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
auto autoShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 30.0f, 30.0f, 350.0f, 100.0f);
auto textFrame = autoShape->get_TextFrame();
auto portion = System::MakeObject<Portion>(u"lorem ipsum...");
auto fillFormat = portion->get_PortionFormat()->get_FillFormat();
fillFormat->get_SolidFillColor()->set_Color(Color::get_Black());
fillFormat->set_FillType(FillType::Solid);
textFrame->get_Paragraphs()->idx_get(0)->get_Portions()->Add(portion);
auto textFrameFormat = textFrame->get_TextFrameFormat();
textFrameFormat->set_AutofitType(TextAutofitType::None);
pres->Save(u"Output-presentation.pptx", SaveFormat::Pptx);
Quando o texto fica muito longo para a caixa, ele transborda.
Shrink Text on Overflow
Se um texto ficar muito longo para a caixa, usando a opção Shrink text on overflow você pode especificar que o tamanho e o espaçamento do texto devem ser reduzidos para que ele caiba na caixa. Para especificar essa configuração, defina a propriedade AutofitType (da classe TextFrameFormat) como Normal.

Este código C++ mostra como especificar que um texto deve ser reduzido quando houver transbordamento em uma apresentação PowerPoint:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
auto autoShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 30.0f, 30.0f, 350.0f, 100.0f);
auto textFrame = autoShape->get_TextFrame();
auto portion = System::MakeObject<Portion>(u"lorem ipsum...");
auto fillFormat = portion->get_PortionFormat()->get_FillFormat();
fillFormat->get_SolidFillColor()->set_Color(Color::get_Black());
fillFormat->set_FillType(FillType::Solid);
textFrame->get_Paragraphs()->idx_get(0)->get_Portions()->Add(portion);
auto textFrameFormat = textFrame->get_TextFrameFormat();
textFrameFormat->set_AutofitType(TextAutofitType::Normal);
pres->Save(u"Output-presentation.pptx", SaveFormat::Pptx);
Info
Ao usar a opção Shrink text on overflow, a configuração é aplicada somente quando o texto fica muito longo para a caixa.Wrap Text
Se você deseja que o texto em uma forma seja quebrado dentro dela quando ultrapassar a borda da forma (apenas a largura), deve usar o parâmetro Wrap text in shape. Para especificar essa configuração, defina a propriedade WrapText (da classe TextFrameFormat) como true.
Este código C++ mostra como usar a configuração Wrap Text em uma apresentação PowerPoint:
auto pres = System::MakeObject<Presentation>();
auto slide = pres->get_Slides()->idx_get(0);
auto autoShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 30.0f, 30.0f, 350.0f, 100.0f);
auto textFrame = autoShape->get_TextFrame();
auto portion = System::MakeObject<Portion>(u"lorem ipsum...");
auto fillFormat = portion->get_PortionFormat()->get_FillFormat();
fillFormat->get_SolidFillColor()->set_Color(Color::get_Black());
fillFormat->set_FillType(FillType::Solid);
textFrame->get_Paragraphs()->idx_get(0)->get_Portions()->Add(portion);
auto textFrameFormat = textFrame->get_TextFrameFormat();
textFrameFormat->set_WrapText(NullableBool::True);
pres->Save(u"Output-presentation.pptx", SaveFormat::Pptx);
Note
Se você definir a propriedadeWrapText como False para uma forma, quando o texto dentro da forma ficar mais longo que a largura da forma, o texto se estenderá além das bordas da forma em uma única linha.
Perguntas Frequentes
As margens internas do quadro de texto afetam o AutoFit?
Sim. O preenchimento (margens internas) reduz a área utilizável para o texto, fazendo com que o AutoFit seja acionado mais cedo—encolhendo a fonte ou redimensionando a forma mais rapidamente. Verifique e ajuste as margens antes de afinar o AutoFit.
Como o AutoFit interage com quebras de linha manuais e suaves?
Quebras forçadas permanecem no lugar, e o AutoFit adapta o tamanho da fonte e o espaçamento em torno delas. Remover quebras desnecessárias costuma reduzir a agressividade com que o AutoFit precisa encolher o texto.
Alterar a fonte do tema ou acionar substituição de fonte influencia os resultados do AutoFit?
Sim. Substituir por uma fonte com métricas de glifo diferentes altera a largura/altura do texto, podendo mudar o tamanho final da fonte e a quebra de linha. Após qualquer mudança ou substituição de fonte, reveja os slides.