WPF标签中的外发光效果和旋转

7

我需要在一个标签上创建外发光效果,并使其旋转一点(大约20度)。我正在使用以下代码,但它不起作用:

<Label Height="106" Margin="80,57,36,0" Name="lblHeading" FontSize="35">
    Brian's 15th Birthday Party
    <Label.Effect>
        <DropShadowEffect BlurRadius="100" ShadowDepth="0" Opacity="1" 
                          Color="White"/>
    </Label.Effect>
</Label>

是否可以在窗口的某个地方添加文本,并添加外发光效果和旋转?如果有人能帮我在标签上添加相同的效果或以其他方式实现而不使用标签控件,那就太好了。

我也尝试了以下方法,但没有帮助。也许是因为我不知道如何使用它,因为它只会导致错误:

<OuterGlowBitmapEffect GlowColor="Blue" GlowSize="30" Noise="1" Opacity="0.4" />

我对WPF非常陌生,因此更希望提供简单的代码或带有一些解释的帮助。 - Ali Rizwan
位图效果在 .Net 4 中已被弃用,因此如果您正在使用该版本,这就是为什么会出现错误的原因。 - Surfbutler
3个回答

12
  1. 你可能想要使用更小的BlurRadius,将其设置为100会使效果接近看不见。我建议使用10。
  2. RenderTransformOrigin设置为您希望文本围绕其旋转的点(0.5, 0.5表示围绕中心旋转)。
  3. Label.RenderTransform内部添加一个RotateTransform

完整的代码应该类似于这样:

<Label Height="106" Margin="80,57,36,0" Name="lblHeading" FontSize="35"
       RenderTransformOrigin="0.5, 0.5">
    Brian's 15th Birthday Party
    <Label.Effect>
        <DropShadowEffect BlurRadius="10" ShadowDepth="0" Opacity="1" 
                      Color="White"/>
    </Label.Effect>
    <Label.RenderTransform>
        <RotateTransform Angle="20"/>
    </Label.RenderTransform>
</Label>

1

以下是如何旋转标签的方法:

<Label>
  <Label.LayoutTransform>
    <RotateTransform Angle="20"/>
  </Label.LayoutTransform>
  <Label.Content>text</Label.Content>
</Label>

+1 给 Codesparkle - 比我更快,而且更完整(在 iPad 上打字很难!)- 我本来想在发布后再处理发光部分,但现在太晚了! - Surfbutler

0

这可以通过修改ControlTemplate来完成。

关键点是使用两个ContentPresenter来显示您的文本,并将BlurEffect附加到一个ContentPresenter上。

代码:

<Label Content="TestContent" Foreground="White" FontSize="20">
    <Label.Template>
        <ControlTemplate TargetType="Label">
            <Border>
                <Grid>
                    <ContentPresenter TextBlock.Foreground="{TemplateBinding Foreground}"/>
                    <ContentPresenter TextBlock.Foreground="{TemplateBinding Foreground}">
                        <ContentPresenter.Effect>
                            <BlurEffect Radius="5"/>
                        </ContentPresenter.Effect>
                    </ContentPresenter>
                </Grid>
            </Border>
        </ControlTemplate>
    </Label.Template>
</Label>

它是什么样子的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接