En WPF, ¿hay alguna manera fácil de agregar subrayados ondulados (como errores ortográficos en Word) a elementos FlowDocument
? Está la clase Underline
, pero parece que no hay forma de darle un estilo.Subrayaciones onduladas en un FlowDocument
Respuesta
Puede crear el efecto ondulado usando los siguientes cambios en la solución de Robert Macne
Añadir un cepillo visual a la sección de Grid.Resources:
<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>
y cambiar la pluma para:
<Pen Brush="{StaticResource WavyBrush}" Thickness="6" />
un subrayado rojo es bastante simple:
<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>
Un ondulado subrayado rojo podría ser un poco más complicado, pero creo que se podría crear una VisualBrush con una cosa roja ondulada en ella, y establece que como el Pincel del bolígrafo que especifique para la TextDecoración subrayada. Editar: vea la publicación de bstoney para esto.
Hola Robert, pls ver mi pregunta WPF, su posible o no http://stackoverflow.com/questions/17541780/how-to-set-inline-images-vertically-center-in- richtextbox –
Sé que esta es una vieja pregunta, pero prefiero este pincel. Es un poco angular pero muy limpio.
<VisualBrush x:Key="WavyBrush">
<VisualBrush.Visual>
<Path Data="M 0,2 L 2,0 4,2 6,0 8,2 10,0 12,2" Stroke="Red"/>
</VisualBrush.Visual>
</VisualBrush>
Aquí está la solución de @ bstoney implementada en el código.
Pen path_pen = new Pen(new SolidColorBrush(Colors.Red), 0.2);
path_pen.EndLineCap = PenLineCap.Square;
path_pen.StartLineCap = PenLineCap.Square;
Point path_start = new Point(0, 1);
BezierSegment path_segment = new BezierSegment(new Point(1, 0), new Point(2, 2), new Point(3, 1), true);
PathFigure path_figure = new PathFigure(path_start, new PathSegment[] { path_segment }, false);
PathGeometry path_geometry = new PathGeometry(new PathFigure[] { path_figure });
DrawingBrush squiggly_brush = new DrawingBrush();
squiggly_brush.Viewport = new Rect(0, 0, 6, 4);
squiggly_brush.ViewportUnits = BrushMappingMode.Absolute;
squiggly_brush.TileMode = TileMode.Tile;
squiggly_brush.Drawing = new GeometryDrawing(null, path_pen, path_geometry);
TextDecoration squiggly = new TextDecoration();
squiggly.Pen = new Pen(squiggly_brush, 6);
text_box.TextDecorations.Add(squiggly);
- 1. Imprimir un WPF FlowDocument
- 2. Transferencia de uno FlowDocument a Segunda FlowDocument
- 3. FlowDocument Forzar un PageBreak (BreakPageBefore)
- 4. Insertar un fragmento de HTML en un WPF FlowDocument
- 5. ¿Cómo puedo ocultar un párrafo en un FlowDocument?
- 6. ¿Cómo insertar contenido en línea de un FlowDocument en otro?
- 7. Cómo convertir FlowDocument a rtf
- 8. Extendiendo un FlowDocument con TextElements personalizados en wpf
- 9. Disminuya el espaciado entre líneas en un TextBlock/FlowDocument
- 10. Detectar FlowDocument Cambiar y Desplazar
- 11. Problema de memoria de FlowDocument en C#
- 12. Ocultar barra de herramientas en WPF FlowDocument
- 13. Convierte FlowDocument a texto simple
- 14. WPF FlowDocument - Posición absoluta del personaje
- 15. WPF FlowDocument Ajustar a escala Página
- 16. WPF - Número de línea automática para FlowDocument?
- 17. Evitar múltiples columnas al imprimir FlowDocument
- 18. Manteniendo el cursor FlowDocument centrado verticalmente en RichTextBox
- 19. Imágenes perdidas en FlowDocument guardadas como documento XPS
- 20. ¿Cómo podemos mostrar .rtf o .doc como flowdocument en WPF?
- 21. ¿Cuál es el mejor sustituto de FlowDocument en Silverlight?
- 22. Implementación de notas al pie en WPF FlowDocument
- 23. ¿Cómo desactivo programáticamente las líneas rojas onduladas en un documento de Microsoft Word a través de VBA?
- 24. ¿Enlazar una lista en un FlowDocument a la lista <MyClass>?
- 25. ¿Cómo puedo producir una "vista previa de impresión" de un FlowDocument en una aplicación WPF?
- 26. crear un documento XPS desde un FlowDocument y adjuntarlo sobre la marcha
- 27. ¿Cómo puedo copiar el contenido de WPF FlowDocument InlineUIContainer?
- 28. WPF: Impresión de FlowDocument sin diálogo de impresión
- 29. ¿Abrir FlowDocument guardado como documento XPS con XPS Viewer?
- 30. ¿Cómo puedo crear una subclase de clase Inline? (el utilizado en FlowDocument)
+1, esto es justo lo que estaba pensando pero no pude hacerlo funcionar correctamente, ¡lindo! –
Encontré conseguir un camino de bezier cúbico para escalar muy bien bastante difícil. Dos líneas diagonales también funcionan, pero no se ven tan bien. – bstoney
Ese WavyBrush de arriba no es una ola. Lo probé. – Elisabeth