0

我试图想出一个创造性的解决方案来产生这种特殊的效果:

我最初的想法:一个具有色度键着色器效果的动态大小的矩形将在文本上滑动到位。但是,我不想破坏着色器往往会发生的文本边缘的保真度。

我也考虑过使用 FormattedText 类,但我不确定它是否支持我正在尝试做的事情。

有什么建议么?

编辑 为了澄清,文本本质上是一个“TabItem”。我希望突出显示的块在所有选项卡项中浮动到选定项。它们目前被放置在一个 Canvas 中,逻辑处理它们的位置。一个简单的动画似乎是不够的。

4

1 回答 1

3

这应该会给你你想要的效果。这对颜色使用了渐变画笔,但它使用了 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>
于 2012-05-31T21:59:44.917 回答