I am currently working on an arrow, containing a text (here 'Test'
), that shows an offset.
My code is:
Width = 200;
Length = 1000;
double arrowHeadWidth = Width;
double arrowHeadLength = Width / 2;
double arrowWidth = Width - arrowHeadWidth / 2;
double arrowLength = Length;
double centerY = Width / 2.0;
var figure = new PathFigure
{
IsClosed = true,
StartPoint = new Point(0, centerY - arrowWidth / 2.0)
};
figure.Segments.Add(new LineSegment(new Point(arrowLength - arrowHeadLength, centerY - arrowWidth / 2.0), true));
figure.Segments.Add(new LineSegment(new Point(arrowLength - arrowHeadLength, centerY - arrowHeadWidth / 2.0), true));
figure.Segments.Add(new LineSegment(new Point(arrowLength, centerY), true));
figure.Segments.Add(new LineSegment(new Point(arrowLength - arrowHeadLength, centerY + arrowHeadWidth / 2.0), true));
figure.Segments.Add(new LineSegment(new Point(arrowLength - arrowHeadLength, centerY + arrowWidth / 2.0), true));
figure.Segments.Add(new LineSegment(new Point(0, centerY + arrowWidth / 2.0), true));
var geometry = new PathGeometry();
geometry.Figures.Add(figure);
var borderPen = new Pen(Brushes.White, 10)
{
LineJoin = PenLineJoin.Round
};
var arrowDrawing = new GeometryDrawing(Brushes.Transparent, borderPen, geometry);
FormattedText formattedText = new FormattedText(
"Test",
System.Globalization.CultureInfo.CurrentUICulture,
FlowDirection.LeftToRight,
new Typeface("Tahoma"),
12,
Brushes.Black);
formattedText.MaxTextWidth = arrowLength - 40;
formattedText.MaxTextHeight = arrowWidth - 10;
Geometry textGeometry = formattedText.BuildGeometry(new System.Windows.Point(20, 5));
GeometryDrawing textDrawing = new GeometryDrawing(Brushes.Red, new Pen(Brushes.Red, 1), textGeometry);
var drawingGroup = new DrawingGroup();
drawingGroup.Children.Add(arrowDrawing);
drawingGroup.Children.Add(textDrawing);
var brush = new DrawingBrush(drawingGroup);
But I only get the arrow shown. What am I doing wrong?
If I comment out the line drawingGroup.Children.Add(arrowDrawing);
I get the text displayed.
Any suggestions would help. Thanks in advance,
Benny
Edit: Creation of arrow added