2

基本的な Markdown スタイルのプレーン/リッチ テキスト エディターを構築しようとしています。(ほとんどの Markdown エディターのように 2 つのパネルを並べて表示するのではなく、テキストがインラインでスタイル設定されているもの) (また、完全な Markdown 仕様をサポートするつもりはありません。リストやテーブルはなく、主にリッチ テキスト形式のみです。太字、斜体、下線など)

AvalonEdit プロジェクトを (Nuget パッケージではなく、ソース コードを介して) 使用するプロジェクトがあります。エディターをすべて希望どおりにセットアップしました。次に、ハイライターのみがサポートしていることに気付いたときに、シンタックス ハイライト XSHD ファイルの作成を開始しました。フォントサイズ、下線などではなく、フォントの色、イタリック体、太字などの書式設定...

フォントの書式設定を追加するにはどうすればよいですか? まったく新しいパーサー/ハイライターなどを作成する必要がありますか? 既存の蛍光ペンにフックして拡張する簡単な方法はありますか?

ソース内の 1 つのファイル (TextEditor.xaml) にいくつかの小さな変更を加えましたが、これを機能させるためにさらに変更を加えるつもりです。 ..

誰かが私を正しい方向に向けることができれば、感謝します - ありがとう!

4

1 に答える 1

2

構文の強調表示のドキュメントから:

テキスト レンダリングの拡張ポイントの中には、「視覚要素ジェネレーター」によって構築された後に視覚的な線の表示を変更できる「視覚的な線トランスフォーマー」のサポートがあります。構文の強調表示のために IVisualLineTransformer を実装する便利な基本クラスは DocumentColorizingTransformer です。そのクラスのドキュメントを見て、完全にカスタムの構文ハイライターを作成する方法を確認してください。この記事では、XML 駆動型の組み込み強調表示エンジンについてのみ説明します。

そのページを何度も読んだりスキャンしたりして、コードをもう少し調べたり、SharpDevelop フォーラムなどの投稿を読んだりするまで、これを完全に理解することはできませんでした。

そして、あなたが私と同じ段階にいる場合(そしてその引用に頭を悩ませることはできません)、要点は、編集者が次の2つのことを行うことです(もちろん単純化されています):

  1. 表示可能なテキストの行を生成します (パフォーマンス上の理由から、現在画面に表示されている行だけを気にします)。
  2. 次に、生成されたテキストに対してさまざまなトランスフォーマーを実行し、さまざまな方法でスタイルを設定します

したがって、「XML 駆動の組み込みハイライト エンジン」は、テキストを検索してスタイルを設定する 1 つの方法にすぎません。これは、DocumentColorizingTransformer のようなカスタム テキスト トランスフォーマーを構築するという、より「高度な」方法の単純な実装を意図したものです。 .

DocumentColorizingTransformer に関する役立つ情報を次に示します (参照先の API ドキュメントに加えて)。

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

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

于 2014-05-25T22:32:48.473 に答える