WPF之TextBlock控件实现字体聚光灯照亮的效果

效果图:

实现思路:

        通过TextBlock.Clip设置EllipseGeometry来实现聚光的效果;

        添加动画使其移动;

        最后添加相同TextBlock作为背景。

        思路参考于收费大佬,欢迎点赞与交流哦!!!

代码实现:

<Canvas>
    <TextBlock Text="🐱‍🐉聚光灯照亮😂" FontSize="64" FontWeight="ExtraLight">
        <TextBlock.Foreground>
            <LinearGradientBrush SpreadMethod="Repeat" StartPoint="0,0" EndPoint="1,0">
                <LinearGradientBrush.GradientStops>
                    <GradientStop Offset="0.00" Color="LawnGreen"/>
                    <GradientStop Offset="0.25" Color="GreenYellow"/>
                    <GradientStop Offset="0.50" Color="Yellow"/>
                    <GradientStop Offset="0.75" Color="SkyBlue"/>
                    <GradientStop Offset="1.00" Color="DeepSkyBlue"/>
                </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
        </TextBlock.Foreground>
    </TextBlock>
    <TextBlock Text="🐱‍🐉聚光灯照亮😂"  FontSize="64" FontWeight="ExtraLight" Foreground="Red">
        <TextBlock.Clip >
            <GeometryGroup>
                <EllipseGeometry RadiusX="42" RadiusY="42" Center="-38,42">
                    <EllipseGeometry.Transform>
                        <TranslateTransform x:Name="TranslateTransform"/>
                    </EllipseGeometry.Transform>
                </EllipseGeometry>
            </GeometryGroup>
        </TextBlock.Clip>
        <TextBlock.Triggers>
            <EventTrigger RoutedEvent="TextBlock.Loaded">
                <BeginStoryboard>
                    <Storyboard RepeatBehavior="Forever">
                        <DoubleAnimation Storyboard.TargetName="TranslateTransform" Storyboard.TargetProperty="X" From="0" To="600" Duration="0:0:5" BeginTime="0:0:1"/>
                        <DoubleAnimation Storyboard.TargetName="TranslateTransform" Storyboard.TargetProperty="X" From="600" To="0" Duration="0:0:5" BeginTime="0:0:7"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </TextBlock.Triggers>
    </TextBlock>
</Canvas>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值