Vous pouvez redimensionner la police du bloc de texte en utilisant l'automatisation si le texte dépasse la taille de la forme. J'ai trouvé que la méthode suivante fonctionne.
Ouvrez le shapesheet de la forme (Fenêtre->Afficher le shapesheet) et ajoutez la section utilisateur (Insérer->Section->Cellules définies par l'utilisateur). Mettez cette formule dans la cellule de valeur pour User.Row_1 :
\=Min(1,Hauteur/HAUTEURTEXTE(LeTexte,Largeur)))
Après que le texte de la forme change, récupérez la valeur de la cellule utilisateur. en c# :
double échelle = shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionUser, (short)IVisio.VisRowIndices.visRowUser, (short)IVisio.VisCellIndices.visUserValue).ResultIU;
Ensuite, définissez la police, et les marges de texte (pour celles qui ne sont pas à zéro) avec ce qui suit (en supposant que la taille de police normale est 12 et la marge gauche est de 4pt :
shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionCharacter, 0, (short)IVisio.VisCellIndices.visCharacterSize).FormulaU = (échelle*12).ToString() + "pt";
shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionObject, (short)IVisio.VisRowIndices.visRowText, (short)IVisio.VisCellIndices.visTxtBlkLeftMargin).FormulaU = (échelle * 4).ToString() + "pt";