kibayasiの日記: 宛 MSのフォントまわり通 2
日記 by
kibayasi
VB2005の印刷まわりをやってるわけだが、
これがまた謎でして・・・
==============================
'PrintDocument1_PrintPageの中身
'フォント
Dim f As Font
f = New Font("MS 明朝", 12)
'1文字の幅を取得
Dim dx As Integer
dx = e.Graphics.MeasureString("0", f).Width
==============================
この時のdxは14を返すんだけど、
"0"の部分の文字列を増やすと摩訶不思議現象になる。
"01"の場合は、23
"012"の場合は、31
"0123"の場合は、40
"01234"の場合は、48
である。
プロポーショナルのフォントにしてるわけではないんだけど、
1文字の幅と思って使うと変になるのだ。
当然、文字と文字の間のスペースってのがあるんだろうけど、
それなら増えてもよさそうなもんだが、
逆に減っていくのだ。
だから、"0123456789"と10文字にすると、91を返す
もし1文字の幅が14だとして計算すると、
10文字だと140になると思うもんだけど、そうならない。
法則的なものを感じるとすると、
+9、+8、+9、+8という増え方をしてるということか。。
14+9+8+9+8+9+8+9+8+9=91
正直 意味がわからん。。
だれか納得のいく説明をしてほしい。
俺の脳みそじゃ無理。(-_-;)
こたえ (スコア:0)
最初の1文字に余裕が見込んであるんだな。きっと。
Re:こたえ (スコア:1)
参考にさせていただきます。m(_ _)m