我试图想出一个创造性的解决方案来产生这种特殊的效果:
我最初的想法:一个具有色度键着色器效果的动态大小的矩形将在文本上滑动到位。但是,我不想破坏着色器往往会发生的文本边缘的保真度。
我也考虑过使用 FormattedText 类,但我不确定它是否支持我正在尝试做的事情。
有什么建议么?
编辑 为了澄清,文本本质上是一个“TabItem”。我希望突出显示的块在所有选项卡项中浮动到选定项。它们目前被放置在一个 Canvas 中,逻辑处理它们的位置。一个简单的动画似乎是不够的。
这应该会给你你想要的效果。这对颜色使用了渐变画笔,但它使用了 3 个渐变色标来确保颜色立即从一种颜色变为下一种颜色,中间没有渐变。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestingWPF"
mc:Ignorable="d"
x:Class="TestingWPF.TestWindow"
d:DesignWidth="477" d:DesignHeight="214"
Background="Black">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="74" FontWeight="Bold">
<TextBlock.Foreground>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="White" Offset="0"/>
<GradientStop x:Name="WhiteOffset" Color="White" Offset="1"/>
<GradientStop x:Name="GrayOffset" Color="Gray" Offset="1"/>
</LinearGradientBrush>
</TextBlock.Foreground>
<TextBlock.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Offset" Duration="0:0:1" RepeatBehavior="Forever">
<DoubleAnimation Storyboard.TargetName="WhiteOffset" From="0" To="1" />
<DoubleAnimation Storyboard.TargetName="GrayOffset" From="0" To="1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
Some Text
</TextBlock>
</Window>