|
分類:[VB.NET/VB2005 以降]
VB2008でWebBrowserを使用して文章を表示するプログラムを作成していますが、 WebBrowserの幅を、原則1行全角36文字で表示できるようにしたいです。 (文章の途中でフォント変更等の装飾等がある場合は、例外として上記にごだわりません。) WebBrowserに表示される文章のフォントはMSゴシックで、例えば以下のようなものを想定しています。
<HTML> <HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"> <TITLE>TEST</TITLE> <STYLE type="text/css"> <!-- body{margin:0px;padding:0px;font-family:"MS ゴシック";} --> </STYLE> </HEAD> <BODY style="font-size : 12pt;"> 亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜 </BODY> </HTML>
色々と調べたところ、GraphicsにはMeasureStringというメソッドがあり、その文字を描画した時のサイズが分かるとのことで 早速試してみました。
Dim strTest As String = "亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜亜" Dim sizF As SizeF Dim fnt As New Font("MS ゴシック", _ 12.0!, _ System.Drawing.FontStyle.Regular, _ System.Drawing.GraphicsUnit.Point, _ CType(128, Byte)) Using bmp As New Bitmap(1000, 100) Using g As Graphics = Graphics.FromImage(bmp) sizF = g.MeasureString(strTest, fnt, New SizeF(bmp.Width, bmp.Height)) End Using End Using
Dim intWidth As Integer = System.Math.Ceiling(sizF.Width) '描画文字列の幅
しかし、この方法で得られた描画文字列の幅と、WebBrowser上に表示される同じ文字列の幅とを比較すると、 WebBrowser上に表示される文字列の幅の方が狭いようです。 (MeasureStringで計算すると幅598ピクセルなのに対し、WebBrowser上に表示される同じ文字列の幅が580ピクセル程度でした。) 両者の描画イメージを比較すると、文字のサイズは同じようですが、文字ピッチに違いがあるようです。 文字ピッチを考慮して、WebBrowser上での文字列の幅を計算するにはどのようにすればいいでしょうか? お知恵をお貸しください。
|