C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ’&’の文字幅取得(MeasureText使用)


(過去ログ 84 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■49990 / inTopicNo.1)  ’&’の文字幅取得(MeasureText使用)
  
□投稿者/ Crowe (6回)-(2010/05/26(Wed) 01:13:35)

分類:[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"; 
            }
        }

引用返信 編集キー/
■49991 / inTopicNo.2)  Re[1]: ’&’の文字幅取得(MeasureText使用)
□投稿者/ Hongliang (635回)-(2010/05/26(Wed) 01:40:07)
TextFormatFlags.NoPrefix を追加、ですかね。
引用返信 編集キー/
■49992 / inTopicNo.3)  Re[2]: ’&’の文字幅取得(MeasureText使用)
□投稿者/ Crowe (7回)-(2010/05/26(Wed) 01:47:26)
アンパサンドニーモニックでしたか。
'\'しか気にしておりませんでした。
Hongliang さんありがとうございました。


No49991 (Hongliang さん) に返信
> TextFormatFlags.NoPrefix を追加、ですかね。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -