Condividi tramite


Procedura: creare un effetto di testo

Un oggetto TextDecoration rappresenta un ornamento visivo che è possibile aggiungere al testo. Sono disponibili quattro tipi di effetti di testo: sottolineato, linea di base, barrato e linea sopra. Nel seguente esempio vengono mostrate le posizioni di tali effetti in relazione al testo.

Esempio dei vari tipi di effetti di testo

Diagramma della posizione delle decorazioni di testo

Per aggiungere un effetto al testo, creare un oggetto TextDecoration e modificarne le proprietà. Utilizzare la proprietà Location per specificare la posizione in cui sarà visualizzato l'effetto di testo, ad esempio la sottolineatura. Utilizzare la proprietà Pen per specificare l'aspetto dell'effetto di testo, ad esempio riempimento a tinta unita o sfumatura di colore. Se non viene specificato alcun valore per la proprietà Pen, gli effetti saranno impostati in modalità predefinita sullo stesso colore del testo. Una volta definito un oggetto TextDecoration, aggiungerlo all'insieme TextDecorations dell'oggetto di testo desiderato.

Nell'esempio riportato di seguito viene mostrato un effetto di testo disegnato con un pennello a sfumatura lineare e una penna tratteggiata.

Esempio di sottolineatura disegnata con un pennello a sfumatura lineare e una penna tratteggiata

Decorazione di testo con sottolineatura sfumata lineare

L'oggetto Hyperlink è un elemento del contenuto del flusso di livello inline che consente di ospitare collegamenti ipertestuali all'interno del contenuto del flusso. Per impostazione predefinita, Hyperlink utilizza un oggetto TextDecoration per visualizzare una sottolineatura. Gli oggetti TextDecoration possono essere prestazione intensive da creare, in particolare se si hanno molti oggetti Hyperlink. Se gli elementi Hyperlink, utilizzati sono molti è opportuno visualizzare una sottolineatura solo al momento della generazione di un evento, ad esempio l'evento MouseEnter.

Nell'esempio riportato di seguito, il collegamento "My MSN" presenta una sottolineatura dinamica, vale a dire che la sottolineatura viene visualizzata solo al momento della generazione dell'evento MouseEnter.

Collegamenti ipertestuali definiti con TextDecorations

Collegamenti ipertestuali con TextDecoration

Per ulteriori informazioni, vedere Procedura: utilizzare una decorazione di testo con un collegamento ipertestuale.

Esempio

Nel codice seguente, un effetto di testo con sottolineatura utilizza il valore del tipo di carattere predefinito.

        ' Use the default font values for the strikethrough text decoration.
        Private Sub SetDefaultStrikethrough()
            ' Set the underline decoration directly to the text block.
            TextBlock1.TextDecorations = TextDecorations.Strikethrough
        End Sub
// Use the default font values for the strikethrough text decoration.
private void SetDefaultStrikethrough()
{
    // Set the underline decoration directly to the text block.
    TextBlock1.TextDecorations = TextDecorations.Strikethrough;
}
<!-- Use the default font values for the strikethrough text decoration. -->
<TextBlock
  TextDecorations="Strikethrough"
  FontSize="36" >
  The quick red fox
</TextBlock>

Nel seguente esempio di codice, viene creato un effetto di testo con sottolineatura mediante l'utilizzo di un pennello a tinta unita per la penna.

        ' Use a Red pen for the underline text decoration.
        Private Sub SetRedUnderline()
            ' Create an underline text decoration. Default is underline.
            Dim myUnderline As New TextDecoration()

            ' Create a solid color brush pen for the text decoration.
            myUnderline.Pen = New Pen(Brushes.Red, 1)
            myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended

            ' Set the underline decoration to a TextDecorationCollection and add it to the text block.
            Dim myCollection As New TextDecorationCollection()
            myCollection.Add(myUnderline)
            TextBlock2.TextDecorations = myCollection
        End Sub
// Use a Red pen for the underline text decoration.
private void SetRedUnderline()
{
    // Create an underline text decoration. Default is underline.
    TextDecoration myUnderline = new TextDecoration();

    // Create a solid color brush pen for the text decoration.
    myUnderline.Pen = new Pen(Brushes.Red, 1);
    myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended;

    // Set the underline decoration to a TextDecorationCollection and add it to the text block.
    TextDecorationCollection myCollection = new TextDecorationCollection();
    myCollection.Add(myUnderline);
    TextBlock2.TextDecorations = myCollection;
}
<!-- Use a Red pen for the underline text decoration -->
<TextBlock
  FontSize="36" >
  jumped over
  <TextBlock.TextDecorations>
    <TextDecorationCollection>
      <TextDecoration 
        PenThicknessUnit="FontRecommended">
        <TextDecoration.Pen>
          <Pen Brush="Red" Thickness="1" />
        </TextDecoration.Pen>
      </TextDecoration>
    </TextDecorationCollection>
  </TextBlock.TextDecorations>
</TextBlock>

Nell'esempio di codice seguente, viene creato un effetto di testo con sottolineatura utilizzando un pennello a sfumatura lineare per la penna tratteggiata.

        ' Use a linear gradient pen for the underline text decoration.
        Private Sub SetLinearGradientUnderline()
            ' Create an underline text decoration. Default is underline.
            Dim myUnderline As New TextDecoration()

            ' Create a linear gradient pen for the text decoration.
            Dim myPen As New Pen()
            myPen.Brush = New LinearGradientBrush(Colors.Yellow, Colors.Red, New Point(0, 0.5), New Point(1, 0.5))
            myPen.Brush.Opacity = 0.5
            myPen.Thickness = 1.5
            myPen.DashStyle = DashStyles.Dash
            myUnderline.Pen = myPen
            myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended

            ' Set the underline decoration to a TextDecorationCollection and add it to the text block.
            Dim myCollection As New TextDecorationCollection()
            myCollection.Add(myUnderline)
            TextBlock3.TextDecorations = myCollection
        End Sub
// Use a linear gradient pen for the underline text decoration.
private void SetLinearGradientUnderline()
{
    // Create an underline text decoration. Default is underline.
    TextDecoration myUnderline = new TextDecoration();

    // Create a linear gradient pen for the text decoration.
    Pen myPen = new Pen();
    myPen.Brush = new LinearGradientBrush(Colors.Yellow, Colors.Red, new Point(0, 0.5), new Point(1, 0.5));
    myPen.Brush.Opacity = 0.5;
    myPen.Thickness = 1.5;
    myPen.DashStyle = DashStyles.Dash;
    myUnderline.Pen = myPen;
    myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended;

    // Set the underline decoration to a TextDecorationCollection and add it to the text block.
    TextDecorationCollection myCollection = new TextDecorationCollection();
    myCollection.Add(myUnderline);
    TextBlock3.TextDecorations = myCollection;
}
<!-- Use a linear gradient pen for the underline text decoration. -->
<TextBlock FontSize="36">the lazy brown dog.
  <TextBlock.TextDecorations>
    <TextDecorationCollection>
      <TextDecoration  
        PenThicknessUnit="FontRecommended">
        <TextDecoration.Pen>
          <Pen Thickness="1.5">
            <Pen.Brush>
              <LinearGradientBrush Opacity="0.5"
                StartPoint="0,0.5"  EndPoint="1,0.5">
                <LinearGradientBrush.GradientStops>
                  <GradientStop Color="Yellow" Offset="0" />
                  <GradientStop Color="Red" Offset="1" />
                </LinearGradientBrush.GradientStops>
              </LinearGradientBrush>
            </Pen.Brush>
            <Pen.DashStyle>
              <DashStyle Dashes="2"/>
            </Pen.DashStyle>
          </Pen>
        </TextDecoration.Pen>
      </TextDecoration>
    </TextDecorationCollection>
  </TextBlock.TextDecorations>
</TextBlock>

Vedere anche

Attività

Procedura: utilizzare una decorazione di testo con un collegamento ipertestuale

Riferimenti

TextDecoration

Hyperlink