我的问题与this问题有关。
这个问题已经过时了,而答案更是如此,感觉它有点缺乏。用户从头开始创建了一个缺乏某种程度的控件,但最重要的一点是,它感觉不应该(至少对我来说)创建一个全新的控件以便拥有一个可以支持的TextBlock抚摸(概述)文本。
我正在尝试通过提供Brush属性和double属性来扩展TextBlock控件。我曾希望我可以覆盖OnRender方法,但它是密封的,所以我不能。
这是我到目前为止(它并不多):
public class StrokedText: TextBlock {
public static readonly DependencyProperty
StrokeProperty = DependencyProperty.Register(
"Stroke",
typeof( Brush ),
typeof( StrokedText ),
new PropertyMetadata(
Brushes.Red,
( S, E ) => ( S as StrokedLabel ).InvalidateVisual( ) ) ),
StrokeWidthProperty = DependencyProperty.Register(
"StrokeWidth",
typeof( double ),
typeof( StrokedText ),
new PropertyMetadata(
2.0D,
( S, E ) => ( S as StrokedLabel ).InvalidateVisual( ) ) );
/// <summary>
/// Get or Set Stroke Brush.
/// </summary>
public Brush Stroke {
get { return this.GetValue( StrokeProperty ) as Brush; }
set { this.SetValue( StrokeProperty, value ); }
}
/// <summary>
/// Get or Set Stroke Width
/// </summary>
public double StrokeWidth {
get { return ( double )this.GetValue( StrokeWidthProperty ); }
set { this.SetValue( StrokeWidthProperty, value ); }
}
我花了一些时间查看TextBlock控件,以便跟踪它实际上将字符串作为文本呈现在屏幕上的位置(我想如果我能找到我可以复制方法),但我希望有人可能碰巧已经知道答案并节省了一些时间,因为TextBlock控件只是......疯了。
那么 - 我可以扩展这个TextBlock,以便我可以像我想要的那样描边文本吗?
为清楚起见,似乎对我要做的事情存在误解 - 我不关心概述文本块。我想概述 TEXT 本身。
答案 0 :(得分:1)
这样的事情:
<TextBlock >
<TextBlock.Effect>
<DropShadowEffect ShadowDepth="0"
Color="Red"
Opacity="1"
BlurRadius="5"/>
</TextBlock.Effect>
Some text that we want outlined
</TextBlock>
使用DropShadowEffect模拟Glow / Outline效果。