【问题标题】:AvalonEdit - Syntax Highlighting - How do I add underline, change font size, etc?AvalonEdit - 语法高亮 - 如何添加下划线、更改字体大小等?
【发布时间】:2014-05-25 05:07:35
【问题描述】:

我正在尝试构建一个基本的 Markdown 风格的纯文本/富文本编辑器。 (一个文本是内联样式的,而不是像大多数 Markdown 编辑器那样并排设置两个面板)(我也不打算支持完整的 Markdown 规范 - 没有列表或表格,主要只是富文本格式比如粗体、斜体、下划线等)

我有一个使用 AvalonEdit 项目的项目(通过源代码,而不是 Nuget 包)——我完全按照我想要的方式设置了编辑器——然后当我意识到荧光笔仅支持字体颜色、斜体、粗体等格式,不支持字体大小、下划线等...

如何添加其他字体格式?我是否必须编写一个全新的解析器/荧光笔/其他?有没有一种简单的方法可以连接和扩展现有的荧光笔?

我已经对源文件 (TextEditor.xaml) 中的一个文件进行了一些小的更改,并且我愿意进行更多更改以完成这项工作 - 尽管当我开始时我希望尽可能少地接触源文件尽可能...

如果有人能指出我正确的方向,我将不胜感激 - 谢谢!

【问题讨论】:

    标签: avalonedit


    【解决方案1】:

    来自the syntax highlighting documentation

    文本渲染扩展点之一是对“视觉 线路变压器”,它可以在之后改变一条视线的显示 它是由“视觉元素生成器”构建的。一个有用的 实现 IVisualLineTransformer 的基类 语法高亮是 DocumentColorizingTransformer。看一眼 该类的文档以查看如何编写完全自定义的语法 荧光笔。本文只讨论 XML 驱动的内置 高亮引擎。

    多次阅读和/或扫描该页面后,我无法完全理解这一点,直到我进一步查看代码,阅读the SharpDevelop forums 上的一些帖子等。

    如果你和我处于同一阶段(并且不能完全理解那句话),要点是编辑器做了这两件事(当然是简化了):

    1. 它会生成可见文本行(它只会影响行 出于性能原因,目前在屏幕上可见)
    2. 然后它在所述生成的文本上运行各种转换器,以各种方式对其进行样式设置

    因此,“XML 驱动的内置突出显示引擎”只是查找和设置文本样式的一种方式 - 一种更“高级”方式的简单实现,即构建自定义文本转换器,像 DocumentColorizingTransformer。

    这里有一些关于 DocumentColorizingTransformer 的信息,您可能会觉得有用(除了他们指向您的 API 文档):

    https://stackoverflow.com/a/23251990/859833

    http://danielgrunwald.de/coding/AvalonEdit/rendering.php

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 2012-09-19
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      相关资源
      最近更新 更多