5

できれGraphicsばオブジェクトを使用して、文字が通常の方向に向けられているが、垂直に積み重ねられるように、どのように文字列を描画しますか?

4

4 に答える 4

7

文字列を文字に分割し、それぞれを描画して、フォントの行の高さを Y 軸変数に追加するだけです。

    protected override void OnPaint(PaintEventArgs e)
    {
        float x = 10.0F;
        float y = 10.0F;

        string drawString = "123";

        using(SolidBrush brush = new SolidBrush(Color.Black))
        using (Font drawFont = new Font("Arial", 16))
        {
            foreach (char c in drawString.ToCharArray())
            {
                PointF p = new PointF(x, y);
                e.Graphics.DrawString(c.ToString(), drawFont, brush, p);

                y += drawFont.Height;
            }
        }
        base.OnPaint(e);
    }
于 2009-10-05T17:01:11.833 に答える
3

これは、縦書きのテキストを実行するサンプル プロジェクトです。また、テキストの配置についていくつかのコメントがあります。

この例から、StringAlignment.Center を使用して文字を中央に配置し、それを DrawString 呼び出しの最後のパラメーターに渡すことができます。

    protected override void OnPaint(PaintEventArgs e) 
    { 
        float x = 10.0F;
        float y = 10.0F;
        Font drawFont = new Font("Arial", 16);
        SolidBrush drawBrush = new SolidBrush(Color.Black);
        StringFormat sf = new StringFormat();
        sf.Alignment = StringAlignment.Center;
        foreach (char c in Text.ToCharArray())
        { 
            PointF p = new PointF(x, y);
            e.Graphics.DrawString(c.ToString(), drawFont, drawBrush, p, sf);
            y += drawFont.Height;
        }
    }
于 2009-10-05T17:14:52.167 に答える
1

すでに右バウンディングボックスを使用している場合は、単に'\n'を挿入する関数を記述します。

于 2009-10-05T16:49:37.083 に答える
0

はい、\ n(改行)のエスケープ文字を使用すると、強制的にダウンします。ただし、ビジュアルデザイナ内に\ nを入力すると、改行のエスケープ文字ではなく、実際の句読点のバックスラッシュ文字を使用するつもりであると\n考えてテキストが配置されます。

于 2009-10-05T16:54:01.600 に答える