private int LineHeight() { if (_lineHeight == 0) { if (_richTextBox.Lines.Any(line => line.Length != 0)) { _lineHeight = TextBoxHelper.GetBaselineOffsetAtCharIndex(_richTextBox, 0); } } return(_lineHeight == 0 ? 12 : _lineHeight); }
private void DrawLines(IEnumerable <TextPos> list, DrawType type) { foreach (var textPos in list) { var start = _richTextBox.GetPositionFromCharIndex(textPos.Start); var end = _richTextBox.GetPositionFromCharIndex(textPos.End); // The position above now points to the top left corner of the character. // We need to account for the character height so the underlines go // to the right place. end.X += 1; start.Y += TextBoxHelper.GetBaselineOffsetAtCharIndex(_richTextBox, textPos.Start); end.Y += TextBoxHelper.GetBaselineOffsetAtCharIndex(_richTextBox, textPos.End); if (start.X == -1 || end.X == -1) { continue; } // Draw the wavy underline/mark if (start.Y < end.Y) { switch (type) { case DrawType.Wave: DrawWave(start, new Point(_richTextBox.Width - 3, start.Y)); DrawWave(new Point(3, end.Y), end); break; case DrawType.Mark: DrawMark(start, new Point(_richTextBox.Width - 3, start.Y)); DrawMark(new Point(0, end.Y), end); break; } } else { switch (type) { case DrawType.Wave: DrawWave(start, end); break; case DrawType.Mark: DrawMark(start, end); break; } } } }
private int LineHeight() { if (!EnvUtils.RunningOnWindows()) { return(12); } if (_lineHeight == 0 && !EnvUtils.RunningOnWindows()) { if (_richTextBox.Lines.Any(line => line.Length != 0)) { _lineHeight = TextBoxHelper.GetBaselineOffsetAtCharIndex(_richTextBox, 0); } } return(_lineHeight == 0 ? 12 : _lineHeight); }