Here有一个带有轮廓的textBlock的演示。
使用下面的代码我得到这个结果
<local:OutlinedTextBlock Stroke="Red"
FontSize="16"
Fill="Transparent"
StrokeThickness="1">
abc
</local:OutlinedTextBlock>
轮廓位于字母边框的中心,如何使轮廓不在字母之外?我需要填充是透明的,只有轮廓才有颜色。
类似的东西:
我的文字不是固定的,但可以由用户更改。
答案 0 :(得分:2)
您需要推送剪辑几何图形,只需向this代码
添加4个新行 protected override void OnRender(DrawingContext drawingContext)
{
EnsureGeometry();
var boundsGeo = new RectangleGeometry(new Rect(0, 0, ActualWidth, ActualHeight));
var invertGeo = Geometry.Combine(boundsGeo, _TextGeometry, GeometryCombineMode.Exclude, null);
drawingContext.PushClip(invertGeo);
drawingContext.DrawGeometry(null, _Pen, _TextGeometry);
drawingContext.Pop();
drawingContext.DrawGeometry(Fill, null, _TextGeometry);
}
但是你需要加倍StrokeThickness,因为只有一半的笔画是可见的。
结果: