In WPF, is there an easy way to add wavy underlines (like spelling errors in Word) to FlowDocument
elements? There's the Underline
class, but there seems to be no way to style it.
views:
973answers:
2
+1
A:
A red underline is simple enough:
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid.Resources>
<FlowDocument x:Key="doc">
<Paragraph>
<Run Text="This text is underlined in red.">
<Run.TextDecorations>
<TextDecoration Location="Underline">
<TextDecoration.Pen>
<Pen Brush="Red" Thickness="1" DashStyle="{x:Static DashStyles.Dot}"/>
</TextDecoration.Pen>
</TextDecoration>
</Run.TextDecorations>
</Run>
</Paragraph>
</FlowDocument>
</Grid.Resources>
<FlowDocumentReader Document="{StaticResource doc}"/>
</Grid>
A wavy red underline would be a bit more involved, but I think you could create a VisualBrush with a wavy red thing in it, and set that as the Brush of the Pen that you specify for the underlining TextDecoration. Edit: see bstoney's post for this.
Robert Macnee
2009-03-10 22:10:30
+9
A:
You can create the wavy effect using the following changes to Robert Macne's solution
Add a visual brush to the Grid.Resources section:
<VisualBrush x:Key="WavyBrush" Viewbox="0,0,3,2" ViewboxUnits="Absolute" Viewport="0,0.8,6,4" ViewportUnits="Absolute" TileMode="Tile">
<VisualBrush.Visual>
<Path Data="M 0,1 C 1,0 2,2 3,1" Stroke="Red" StrokeThickness="0.2" StrokeEndLineCap="Square" StrokeStartLineCap="Square" />
</VisualBrush.Visual>
</VisualBrush>
And change the pen to:
<Pen Brush="{StaticResource WavyBrush}" Thickness="6" />
bstoney
2009-03-11 07:58:36
+1, this is just what I was thinking of but couldn't get it to work correctly, nice!
Robert Macnee
2009-03-11 15:09:33
I found getting a cubic bezier path to scale nicely quite difficult. Two diagonal lines works as well, but didn't look as good.
bstoney
2009-03-11 21:52:17
That WavyBrush above is not a wave I tested it.
Lisa
2010-10-13 10:05:50
Lisa - I've re-tested in Expression Blend 4 and updated the visual brush. It now looks a bit more 'wavy' at 100%, the usual scale :)
bstoney
2010-10-14 06:06:14