【解決方法】RichTextBox の文字の char Rectangle (char 境界) を取得するには?

プログラミングQA


メソッド GetPositionFromCharIndex(int) は、RichTextBox 内の指定されたインデックスにある指定された文字の位置のみを返します。場合によっては、それだけでは不十分です。RictTextBox 内の指定された文字 (指定されたインデックス) の境界または Rectangle を取得したいと考えています。 ( GetPositionFromCharIndex() から取得した位置は、まさに必要な Rectangle の場所です)。 つまり、その Rectangle のサイズがわかれば、問題を解決できるということです。

そのサイズ構造の高さを見つけるのは難しいと思います。 (幅はOK)。 Height は文字のフォントの高さではないことに注意してください。 フォントサイズが 14 の文字 A があり、文字 B が A のすぐ後にあるが、フォントサイズが 30 である場合、これらの両方の文字の高さは同じである必要があります (ただし、幅は異なる場合があります。つまり、両方のサイズを意味します)。も異なります)。

同じ行の文字の高さの最大値を検索することはアプローチですが、非常に難しく効率的ではないと思います。 私は別のより良い解決策を見つけています。

これを解決するのを手伝ってください。 ちょっと急です。 ありがとう!

ヴィファロン

解決策 1

やあ、
リッチ テキスト コントロールのグラフィックを作成し、解析したいテキストを解析して、そのテキストのサイズを取得する必要があります。

C#
var font = new System.Drawing.Font(this.Font, FontStyle.Regular);
Graphics graphics = richTextBox1.CreateGraphics();
SizeF textSize = graphics.MeasureString("A", font);
float width = textSize.Width;

これは、解析しているテキストの幅になります。単語を解析する場合は、単語の幅などになります。

この単一の Font パラメータを考慮に入れる必要があります。テキストが Font パラメータの混合物である場合は、フォントと対応するテキストのループに追加する必要があります。

よろしく
ジェガン

コメント

タイトルとURLをコピーしました