Is it possible to apply an outer bevel 开发者_StackOverflow中文版effect to the label text in WPF?
as for me, the Glow effect should be sufficient:
Here's a way to get Glow-effect on Text. Using the OutlinedText control from this link which offers Stroke.
<local:OutlinedText FontSize="100"
Fill="Black"
Bold="True"
Stroke="White"
StrokeThickness="3"
Text="Glow">
<local:OutlinedText.Effect>
<DropShadowEffect ShadowDepth="0"
Color="White"
Opacity="1"
BlurRadius="12"/>
</local:OutlinedText.Effect>
</local:OutlinedText>
Update
This is the closest I've come to a Bevel effect but it doesn't work very well. Used the approach from this link.
<Style x:Key="ContentControlStyle1" TargetType="{x:Type ContentControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContentControl}">
<Grid>
<TextBlock Name="Highlight" Foreground="#66FFFFFF" Text="{TemplateBinding Content}" />
<TextBlock Name="Shadow" Margin="0,4,0,0" Foreground="#CC000000" Text="{TemplateBinding Content}"/>
<ContentPresenter Margin="0,2,0,0"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ContentControl Style="{DynamicResource ContentControlStyle1}" FontSize="101" Foreground="DarkGray" Content="Bevel"/>
I'm not particularly happy with this 'solution':
<TextBlock Text="Hello World!" Foreground="Red">
<TextBlock.Effect>
<BlurEffect Radius="1" KernelType="Box" />
</TextBlock.Effect>
</TextBlock>
<TextBlock Text="Hello World!" />
Other option is to make your own pixel shader, I'm not very good at that so I'm afraid that I cant help you :/
edit: Better solution, still not bevel though.
<TextBlock Text="Hello World!">
<TextBlock.Effect>
<DropShadowEffect BlurRadius="2" Color="Red" Direction="0" ShadowDepth="0" />
</TextBlock.Effect>
</TextBlock>
As far as i know this could of work:
<Label Content="Hi there!">
<Label.BitmapEffect>
<OuterGlowBitmapEffect/>
</Label.BitmapEffect>
</Label>
I have NOT tested this in a label, but i has worked for me in other controls and shapes, also, check out all the effect list IntelliSense gives you :)
Ah, okay I understand your problem better.
Try something like this:
<Grid>
<Grid.Resources>
<OuterGlowBitmapEffect GlowColor="Blue" GlowSize="5" x:key="Glow" />
</Grid.Resources>
<Label Content="Blah!" BitmapEffect="{StaticResource Glow}" />
</Grid>
I get "Blah!" with a blue glow. Seems like a decent work around since Label's content can't be set twice.
Hope that helps!
EDIT: This won't work unless you're using Framework 3.5 as BitmapEffect has been deprecated. :(
Followintg Oggy's suggestion:
<Label.Effect>
<DropShadowEffect BlurRadius="5"
Color="Red"
Opacity="1"
ShadowDepth="0" />
</Label.Effect>
精彩评论