Share via


TextEffectResolver 類別

定義

協助程式類別,可設定文字容器中的文字效果。

public ref class TextEffectResolver abstract sealed
public static class TextEffectResolver
type TextEffectResolver = class
Public Class TextEffectResolver
繼承
TextEffectResolver

範例

下列範例示範如何將 、 ScaleTransformRotateTransform 文字效果套用 TranslateTransform 至文字。 以下是範例的 XAML。

<Page  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.TextEffectTargetExample"
    Title="TextBlock Properties Sample">

  <StackPanel>

    <RadioButton Click="teTranslate" Margin="5,0,5,0">TranslateTransform</RadioButton>
    <RadioButton Click="teScale" Margin="5,0,5,0">ScaleTransform</RadioButton>
    <RadioButton Click="teRotate" Margin="5,0,5,0">RotateTransform</RadioButton>

    <TextBlock Background="LightGray" TextWrapping="Wrap" Name="tb1">
      Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
      Nam laoreet dolor et dolor. Vestibulum quis nunc auctor ante dignissim venenatis. Curabitur wisi.
      Donec faucibus auctor ipsum. In fermentum dui.  Ut suscipit aliquam eros. Nullam elementum quam eu
      enim. Sed a purus id nisl imperdiet blandit. Cum sociis natoque penatibus et magnis dis parturient
      montes, nascetur ridiculus mus. Sed at quam.
    </TextBlock>

  </StackPanel>

</Page>

以下是此範例的程式碼後置。

using System;
using System.Windows;
using System.Collections;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Documents;

namespace SDKSample
{
    public partial class TextEffectTargetExample : Page
    {

        // Event handler for translating (moving) the text element.
        public void teTranslate(object sender, RoutedEventArgs e)
        {
            // Wipe out existing TextEffects on the TextBlock
            DisableTextEffects();

            TextEffect myEffect = new TextEffect();
            myEffect.PositionStart = 0;
            myEffect.PositionCount = 999;

            // Create a TranslateTransform that moves the TextBlock to an offset position of
            // 50,50.
            TranslateTransform myTranslateTransform = new TranslateTransform(50,50);
            myEffect.Transform = myTranslateTransform;

            // Apply the effect to the TextBlock
            EnableTextEffects(tb1, myEffect);
         }

         // Event handler for transforming the size of the text element.
        public void teScale(object sender, RoutedEventArgs e)
        {
            // Wipe out existing TextEffects on the TextBlock
            DisableTextEffects();

            TextEffect myEffect = new TextEffect();
            myEffect.PositionStart = 0;
            myEffect.PositionCount = 999;

            // Create a ScaleTransform that scales the TextBlock by 5.
            ScaleTransform myScaleTransform = new ScaleTransform(5,5);
            myEffect.Transform = myScaleTransform;

            // Apply the effect to the TextBlock
            EnableTextEffects(tb1, myEffect);
        }

        public void teRotate(object sender, RoutedEventArgs e)
        {
            // Wipe out existing TextEffects on the TextBlock
            DisableTextEffects();

            TextEffect myEffect = new TextEffect();
            myEffect.PositionStart = 0;
            myEffect.PositionCount = 999;

            // Create a ScaleTransform that rotates the text by 45 degrees.
            RotateTransform myRotateTransform = new RotateTransform(45);
            myEffect.Transform = myRotateTransform;

            // Apply the effect to the TextBlock
            EnableTextEffects(tb1, myEffect);
        }

        // Disable all existing text effects to make way for new ones.
        private void DisableTextEffects()
        {
            if (_textEffectTargets != null)
            {
                foreach (TextEffectTarget target in _textEffectTargets) 
                     target.Disable();
            }
        }

        // Enable TextEffectTargets and apply effect to TextBlock.
        private void EnableTextEffects(TextBlock tb, TextEffect effect)
        {
            _textEffectTargets = TextEffectResolver.Resolve(tb.ContentStart, tb.ContentEnd, effect);
            foreach (TextEffectTarget target in _textEffectTargets)
                target.Enable();           
        }

        private TextEffectTarget[] _textEffectTargets; 
    }
}

方法

Resolve(TextPointer, TextPointer, TextEffect)

將文字範圍中的文字效果解析為文字效果目標清單。

適用於