できれGraphics
ばオブジェクトを使用して、文字が通常の方向に向けられているが、垂直に積み重ねられるように、どのように文字列を描画しますか?
1212 次
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 に答える