TextEffectResolver.Resolve(TextPointer, TextPointer, TextEffect) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将文本范围的文本效果解析为文本效果目标的列表。
public:
static cli::array <System::Windows::Documents::TextEffectTarget ^> ^ Resolve(System::Windows::Documents::TextPointer ^ startPosition, System::Windows::Documents::TextPointer ^ endPosition, System::Windows::Media::TextEffect ^ effect);
public static System.Windows.Documents.TextEffectTarget[] Resolve (System.Windows.Documents.TextPointer startPosition, System.Windows.Documents.TextPointer endPosition, System.Windows.Media.TextEffect effect);
static member Resolve : System.Windows.Documents.TextPointer * System.Windows.Documents.TextPointer * System.Windows.Media.TextEffect -> System.Windows.Documents.TextEffectTarget[]
Public Shared Function Resolve (startPosition As TextPointer, endPosition As TextPointer, effect As TextEffect) As TextEffectTarget()
参数
- startPosition
- TextPointer
起始文本指针。
- endPosition
- TextPointer
结束文本指针。
- effect
- TextEffect
要应用于文本的效果。
返回
与文本范围对应的 TextEffectTarget 对象的集合。
示例
以下示例演示如何对文本应用 TranslateTransform、 ScaleTransform和 RotateTransform 文本效果。 下面是示例的 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;
}
}
注解
对于每个连续的文本块,此方法创建一个文本效果,该效果面向范围 (父) 元素。