C#で文字に関する事
C#で文字を扱うことについてメモ程度に。
文字といっても、コンソールに出すとかTextBoxに表示とかではなくフォームやPictureBoxに描画ということです。
PictureBoxに文字を書くにはDrawStringを使うんですが、こいつ縁取り出来ないみたいなんです。
なので、縁取りを出来るようなやり方を探したところDrawPathを使って書くとい方法があるらしい。
コードはこんな感じ。
初期化関係は省略。
まずは、DrawString
Graphics g; Point p; //表示位置 Brush b; //文字色 Font f; //フォント g.DrawString("hoge", f, b, p);
次は、縁取り出来るようにする。
Point p; //表示位置 Brush b; //文字色 int size; //文字サイズ GraphicsPath gp = new GraphicsPath(); gp.AddString("hogege", new FontFamily("Arial"), (int)FontStyle.Regular, size, p, StringFormat.GenericDefault); g.FillPath(b, gp); g.DrawPath(Pens.Black, gp);
こうするといいんだけど、なんか表示された文字に違和感が。
線で囲んだ中を塗りつぶした感じ。
そして、かなり処理がもっさりした感じになった。
CPUの使用率も後者のほうがかなり高かった。
うまいこと文字の縁取りが出来るようにすることできないかな?
drawStringで出来たら幸せなんだけど。
要調査。
おまけ
表示する文字の長さと高さを取得する方法は簡単。
Size s;
Font f;
s = TextRenderer.MeasureText("hoge", f);
あとは、s.Widthやs.Heightで文字の長さや高さがわかる。