更改avalon编辑中的默认行高

leg*_*ing 3 c# avalonedit

我正在使用avalon编辑编写一个自定义软件,我正在寻找一种方法来使线之间的空间(高度)更大.目前,每当用户结束写一行并想要写另一行时,我就被迫添加一个空行.

我已经开始研究TextView似乎计算defaultLineHeight 的类,但我唯一能够影响的是视觉插入符号的高度,而不是内容本身.

目前我正在考虑使每一对线都看不见但我希望有一种更简单的方法来实现在线之间添加更多空间的简单操作.

这是TextView我正在检查的类的方法.欢迎任何提示或提示.

void CalculateDefaultTextMetrics()
{
    if (defaultTextMetricsValid)
    {
        return;
    }

    defaultTextMetricsValid = true;
    if (formatter != null)
    {
        var textRunProperties = CreateGlobalTextRunProperties();
        using (
            var line = formatter.FormatLine(
                new SimpleTextSource("x", textRunProperties),
                0,
                32000,
                new VisualLineTextParagraphProperties { defaultTextRunProperties = textRunProperties },
                null))
        {
            wideSpaceWidth = Math.Max(1, line.WidthIncludingTrailingWhitespace);
            defaultBaseline = Math.Max(1, line.Baseline);
            defaultLineHeight = Math.Max(1, line.Height);
        }
    }
    else
    {
        wideSpaceWidth = FontSize / 2;
        defaultBaseline = FontSize;
        **defaultLineHeight = FontSize + 3; // bigger value only affects caret height :(**
    }

    // Update heightTree.DefaultLineHeight, if a document is loaded.
    if (heightTree != null)
    {
        heightTree.DefaultLineHeight = defaultLineHeight;
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Dan*_*iel 5

DefaultLineHeight是默认字体中一条线的高度,用作每条线高度的初始假设.(例如,用于计算滚动条位置)

每当实际测量线(TextView.BuildVisualLine)时,测量的高度将存储在高度树中,覆盖默认高度.这是因为自动换行(或改变字体大小的线性变换器)可能导致每一行具有不同的高度.

目前不支持行间距.如果要添加,可以尝试更改高度计算VisualLine,例如通过更改VisualLine.SetTextLines().