Ejemplo n.º 1
0
        /// <inheritdoc/>
        protected override Size MeasureOverride(Size availableSize)
        {
            typeface = this.CreateTypeface();
            emSize   = (double)GetValue(TextBlock.FontSizeProperty);

            using (var text = TextFormatterFactory.CreateTextLine(
                       this,
                       new string('9', maxLineNumberLength),
                       typeface,
                       emSize,
                       (Brush)GetValue(Control.ForegroundProperty)
                       )) {
                return(new Size(text.Width, 0));
            }
        }
Ejemplo n.º 2
0
        /// <inheritdoc/>
        protected override void OnRender(DrawingContext drawingContext)
        {
            TextView textView   = this.TextView;
            Size     renderSize = this.RenderSize;
            double   w          = renderSize.Width / maxLineNumberLength;

            if (textView != null && textView.VisualLinesValid)
            {
                var foreground = (Brush)GetValue(Control.ForegroundProperty);
                foreach (VisualLine line in textView.VisualLines)
                {
                    int lineNumber = line.FirstDocumentLine.LineNumber;
                    using (var text = TextFormatterFactory.CreateTextLine(
                               this,
                               lineNumber.ToString(CultureInfo.CurrentCulture),
                               typeface, emSize, foreground
                               )) {
                        double y = line.GetTextLineVisualYPosition(line.TextLines[0], VisualYPosition.TextTop);
                        text.Draw(drawingContext, new Point(renderSize.Width - text.Width - w, y - textView.VerticalOffset), InvertAxes.None);
                    }
                }
            }
        }