0

フッターにキャプションがあるレポートを生成しています。DrawText を使用して、キャプションのサイズを調べます。問題は、テキストが常に切り取られることですが、テキストの最後にキャリッジ リターンがあると、すべてのテキストが完全に表示されます。

lClientRect := Rect(0, 0, 4770, 59);
lFlags := DT_CALCRECT or DT_EXPANDTABS or Alignments[Alignment]
       or WordWraps[WordWrap] or DT_NOPREFIX or DT_TOP or DT_EXTERNALLEADING;

DrawText(lCanvas.Handle, PChar(lsCaption), Length(lsCaption), lClientRect, lFlags);

DrawText の呼び出し後に rect を調べたところ、(0, 0, 4366, 59) ですが、キャリッジ リターンがある場合は (0, 0, 4366, 118) です。

何が起こっているのか、私には何の手がかりもありません。どんな助けでも大歓迎です。

4

1 に答える 1

3

キャリッジ リターンは文字列に 2 行目のテキストを追加し、計算された四角形の高さを 2 倍にします。(Windows は、改行またはキャリッジ リターン文字が新しい行を開始するかどうかについて柔軟です。)

テキストが切り取られている理由 (下端であると思います) については、テキストを描画するときとは異なるフォントを使用してサイズを計算している可能性があります。

于 2013-05-02T16:31:46.570 に答える