|
分類:[C#]
S-JISの全1バイトと2バイト文字の文字幅を取得しようとしています。(プロポーショナル)
そこでTextRenderer.MeasureTextを使用して文字の幅を取得したのですが
半角'&'だけ値がゼロとなってしまいます。
うまく取れる方法はないでしょうか。
#MeasureTextにGraphicsを使用するとかなり遅くなりますが
使用しないとNoPaddingが指定できないので
余計な横幅が入り文字幅は取得できないんですよね…。
sample(1バイトの文字幅取得)
---
private void Form1_Load(object sender, EventArgs e)
{
string s = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz"
+ "{|}~。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚";
richTextBox1.Font = new System.Drawing.Font("MS Pゴシック", 12F, System.Drawing.FontStyle.Regular);
Font f = richTextBox1.Font;
Graphics g = richTextBox1.CreateGraphics();
Size pSize = new Size(int.MaxValue, int.MaxValue);
TextFormatFlags flags = TextFormatFlags.NoPadding;
foreach (char c in s)
{
Size size = TextRenderer.MeasureText(g, c.ToString(), f, pSize, flags);
richTextBox1.Text += c + "\t" + size.Width + "\r\n";
}
}
|