本文整理汇总了C#中ITextViewLine.GetExtendedCharacterBounds方法的典型用法代码示例。如果您正苦于以下问题:C# ITextViewLine.GetExtendedCharacterBounds方法的具体用法?C# ITextViewLine.GetExtendedCharacterBounds怎么用?C# ITextViewLine.GetExtendedCharacterBounds使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITextViewLine
的用法示例。
在下文中一共展示了ITextViewLine.GetExtendedCharacterBounds方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Intersects
bool Intersects(SnapshotSpan fullSpan, ITextViewLine line, Rect rect) {
var span = fullSpan.Intersection(line.ExtentIncludingLineBreak);
if (span == null || span.Value.Length == 0)
return false;
var start = line.GetExtendedCharacterBounds(span.Value.Start);
var end = line.GetExtendedCharacterBounds(span.Value.End - 1);
double left = Math.Min(start.Left, end.Left) - wpfTextView.ViewportLeft;
double top = Math.Min(start.Top, end.Top) - wpfTextView.ViewportTop;
double right = Math.Max(start.Right, end.Right) - wpfTextView.ViewportLeft;
double bottom = Math.Max(start.Bottom, end.Bottom) - wpfTextView.ViewportTop;
bool b = left <= right && top <= bottom;
Debug.Assert(b);
if (!b)
return false;
var r = new Rect(left, top, right - left, bottom - top);
return r.IntersectsWith(rect);
}
示例2: MoveTo
CaretPosition MoveTo(ITextViewLine textLine, double xCoordinate, bool captureHorizontalPosition, bool captureVerticalPosition, bool canAutoIndent) {
if (textLine == null)
throw new ArgumentNullException(nameof(textLine));
bool filterPos = true;
// Don't auto indent if it's at column 0
if (canAutoIndent && CanAutoIndent(textLine) && xCoordinate > textLine.TextRight) {
var wpfView = textView as IWpfTextView;
if (wpfView != null) {
int indentation = IndentHelper.GetDesiredIndentation(textView, smartIndentationService, textLine.Start.GetContainingLine()) ?? 0;
var textBounds = textLine.GetExtendedCharacterBounds(new VirtualSnapshotPoint(textLine.Start, indentation));
xCoordinate = textBounds.Leading;
filterPos = false;
}
}
var bufferPosition = textLine.GetInsertionBufferPositionFromXCoordinate(xCoordinate);
Affinity = textLine.IsLastTextViewLineForSnapshotLine || bufferPosition.Position != textLine.End ? PositionAffinity.Successor : PositionAffinity.Predecessor;
if (filterPos)
bufferPosition = FilterColumn(bufferPosition);
SetExplicitPosition(bufferPosition);
if (captureHorizontalPosition)
preferredXCoordinate = Left;
if (captureVerticalPosition)
SavePreferredYCoordinate();
return Position;
}