Définissez l'exposant et l'indice dans le texte formaté dans wpf

Comment puis-je définir un texte en indice/exposant en texte formatté dans wpf

36
demandé sur Dave Clemmer 2010-01-19 20:37:42

8 réponses

Vous utilisez la Typographie.Variantes:

<TextBlock>
    <Run>Normal Text</Run>
    <Run Typography.Variants="Superscript">Superscript Text</Run>
    <Run Typography.Variants="Subscript">Subscript Text</Run>
</TextBlock>
43
répondu Reed Copsey 2010-01-19 17:54:53

Vous pouvez utiliser quelque chose comme <TextBlock>5x<Run BaselineAlignment="Superscript">4</Run> + 4</TextBlock>.

cependant, autant que je sache, vous devrez réduire la taille de la police vous-même.

12
répondu Matthias 2010-01-19 17:43:22

j'ai utilisé une transformation de mise en page, parce que Typography.Variants souvent ne fonctionne pas:

<TextBlock Text="MyAmazingProduct"/>
 <TextBlock Text="TM">
  <TextBlock.LayoutTransform>
   <!-- Typography.Variants="Superscript" didn't work -->
   <TransformGroup>
    <ScaleTransform ScaleX=".75" ScaleY=".75"/>
    <TranslateTransform Y="-5"/>
   </TransformGroup>
  </TextBlock.LayoutTransform>
 </TextBlock>
<TextBlock Text="{Binding Path=Version, StringFormat={} v{0}}"/>

l'avantage d'utiliser un

9
répondu Ramon de Klein 2014-08-07 14:23:10

Il est intéressant de noter que pour certains personnages (m 2, m 3, etc) un exposant n'est pas nécessaire, mais le caractère unicode peut être utilisé. Par exemple:

<Run Text=" m&#x00B3;" />

cela montrerait m 3.

7
répondu Freek Sanders 2016-12-19 13:19:21

Je ne sais pas si vous avez besoin de cela pour travailler avec FormattedText précisément, ou vous voulez dire dérivations de Inline, mais ce qui suit fonctionnera sur Inlines, même si la typographie.Variantes="Superscript" ne fonctionne pas.

TextRange selection = new TextRange(document.ContentStart, document.ContentEnd);
selection.ApplyPropertyValue(Inline.BaselineAlignmentProperty, BaselineAlignment.Superscript);

j'Espère que ça aide!

3
répondu T. Webster 2010-10-03 23:32:27

la Typographie.Variantes ne fonctionne que pour ouvrir les types de polices de caractères. Si vous n'aimez pas que vos superscripts/subscripts dépassent la hauteur du texte réel, vous pouvez utiliser quelque chose comme ceci:

<StackPanel Orientation="Horizontal">
    <TextBlock FontSize="10" Margin="0,5,0,0">1</TextBlock>
    <TextBlock FontSize="30">H</TextBlock>
    <TextBlock FontSize="10" Margin="0,20,0,0">2</TextBlock>
</StackPanel>
3
répondu Nitin Chaudhari 2010-11-01 13:12:45

Paramètre pour exposant fonctionne très bien avec le code suivant:

<TextBlock Text="(cm"  />
<TextBlock ><Span BaselineAlignment="Top" FontSize="8">2</Span></TextBlock>
<TextBlock Text=")" />

définir l'alignement de base pour un indice dans la balise Span n'a pas fonctionné pour moi. J'ai essayé le code suivant et ça a bien marché.

  <TextBlock Text="H"  />
  <TextBlock Text="2" Margin="-2,0,-2,0" TextBlock.LineHeight="3" >   
  <TextBlock Text="O" />
1
répondu GCP 2013-07-20 12:49:50

C'est la seule chose qui a fonctionné pour moi. Il vous donne également plus de contrôle sur l'alignement et la taille de la police.

<TextBlock Grid.Row="17">
    3 x 3<Run FontSize="6pt" BaselineAlignment="TextTop">2</Run>)
</TextBlock>
0
répondu MoMo 2015-03-13 15:55:05