我有一个在某个时刻以编程方式添加到画布的文本框,我希望所有文本都具有投影效果,但我不希望将该效果应用于文本框本身的边框。我该怎么做呢?向文本框添加 dropshadoweffect 会将效果应用到框的边框,并稍微“模糊”文本,但这不是我想要的,而且我在文本框中找不到任何属性,可以让我单独向文本添加效果。我真的必须重新设计文本框或制作自己的模板才能实现此目的吗?
请注意,这是一个文本框,而不是文本块(在这种情况下,我只需从here http://msdn.microsoft.com/en-us/library/ms748273.aspx)
Update:找到了更好的方法,可以跳过Border
部分如果您应用Effect
直接到ScrollViewer
将文本封装在模板中。
<TextBox Text="Shadow Text">
<TextBox.Resources>
<Style TargetType="ScrollViewer">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="4"
Direction="330"
Color="Black"
Opacity="0.5"
BlurRadius="4"/>
</Setter.Value>
</Setter>
</Style>
</TextBox.Resources>
</TextBox>
更新2:错过了创建的部分TextBox
在代码中。这是与上面的 Xaml 等效的 C#
Setter effectSetter = new Setter();
effectSetter.Property = ScrollViewer.EffectProperty;
effectSetter.Value = new DropShadowEffect
{
ShadowDepth = 4,
Direction = 330,
Color = Colors.Black,
Opacity = 0.5,
BlurRadius = 4
};
Style dropShadowScrollViewerStyle = new Style(typeof(ScrollViewer));
dropShadowScrollViewerStyle.Setters.Add(effectSetter);
TextBox dropShadowTextBox = new TextBox();
dropShadowTextBox.Text = "Shadow Text";
dropShadowTextBox.Foreground = Brushes.Teal;
dropShadowTextBox.FontSize = 40;
dropShadowTextBox.Margin = new Thickness(10);
dropShadowTextBox.Resources.Add(typeof(ScrollViewer), dropShadowScrollViewerStyle);
好问题,一个想法是使背景和边框画笔透明TextBox
并将其放在一个Border
<Border BorderThickness="1"
BorderBrush="#FF7F9DB9"
SnapsToDevicePixels="True"
UseLayoutRounding="True"
Margin="10">
<TextBox Text="Shadow Text"
Foreground="Teal"
FontSize="40"
Background="Transparent"
BorderBrush="Transparent">
<TextBox.Effect>
<DropShadowEffect ShadowDepth="4"
Direction="330"
Color="Black"
Opacity="0.5"
BlurRadius="4"/>
</TextBox.Effect>
</TextBox>
</Border>
这是与“正常”的比较TextBox
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)