0

200 ピクセルのスペースがあり、そこに 2 つの文字列を描画したいとします。 .トリミングオプションは言う)

それぞれを測定して手動で描画する必要がありますか、それとも、車輪を再発明することなく、私がやろうとしていることをサポートする方法が DrawString にありますか?

\l と \r がこれを行うエスケープであると想像してください。

graphics.Drawstring("\lfirst\rsecond", ...);

そして、私は次のようなもので終わるでしょう

"first              second"

少なくとも、それは私が望んでいることです (\l と \r が存在しないことはわかっています)。方法はありますか?

4

2 に答える 2

3

私はあなたのフラグを無視しました。代わりに、テキストを整列させる方法を (大まかに) 示しています。テキストを選択して分割し、2 つの別々の文字列として描画するのは簡単です。

string text2 = "Use TextFormatFlags and Rectangle objects to"
 + " align text in a rectangle.";

using (Font font2 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))
{
    Rectangle rect2 = new Rectangle(150, 10, 130, 140);

    // Create a TextFormatFlags with word wrapping, horizontal center and
    // vertical center specified.
    TextFormatFlags flags = TextFormatFlags.HorizontalLeft |
        TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak;

    // Draw the text and the surrounding rectangle.
    TextRenderer.DrawText(e.Graphics, text2, font2, rect2, Color.Blue, flags);
    e.Graphics.DrawRectangle(Pens.Black, rect2);
}
于 2012-06-04T22:48:02.800 に答える
1

長い目で見れば、私がやったことは次のとおりです。

  1. 左の文字列で MeasureString を呼び出す
  2. 右側の文字列で MeasureString を呼び出す
  3. 左揃えで左文字列を描画
  4. 2 つの文字列の幅の合計が使用可能なスペースの幅よりも小さい場合は、右の文字列を右揃えで描画します。

非常に簡単ですが、フレームワークの中に私のために仕事をしてくれる何かがあることを望んでいました.

于 2012-06-08T19:56:20.737 に答える