タイトル | : DrawStringで文字を書いたときの幅を求めるには? |
記事No | : 6438 |
投稿日 | : 2007/10/13(Sat) 12:21 |
投稿者 | : トッチー |
VB.NET2003で 画面解像度は1024×768です。 DrawStringで文字をピクチャーボックスに文字を書いたときに、 高さは求められるのですが、幅は求められません。 下記ソースでは、フォント・記入文字を便宜上定数にしてありますが、 状況によって変更します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim gGrafic As Graphics Dim intHeight As Integer Dim intLenB As Integer '文字バイト数 Const FONTSIZE As Integer = 17 '文字フォントサイズ Const STRMOJI As String = "テスト" '記入文字 With PictureBox2 .Image = New Bitmap(150, 50) gGrafic = Graphics.FromImage(.Image) End With
'Hhttp://hanatyan.sakura.ne.jp/dotnet/vb6tonet.htmのLenBを参考に intLenB = System.Text.Encoding.Default.GetByteCount(STRMOJI) Dim fFont As New Font("MS Pゴシック", FONTSIZE)
'Label1.Text = "FONTSIZE: " & FONTSIZE & vbCrLf & _ ' "intLenB: " & intLenB & vbCrLf & _ ' "STRMOJI: " & STRMOJI
'A gGrafic.DrawString(STRMOJI, fFont, Brushes.Black, 10, 10) intHeight = fFont.Height
'B gGrafic.DrawString(intHeight, fFont, Brushes.Black, _ 10 + intLenB * 0.5 * FONTSIZE, 10 + intHeight)
'0.3528=掲示板記事No : 5889 を参考に 'gGrafic.DrawString(intHeight, fFont, Brushes.Black, _ 10 + intLenB * 0.3528 * FONTSIZE, 10 + intHeight)
fFont.Dispose() gGrafic.Dispose()
End Sub
と書いてみました。 Aで書かれた文字の右端とBで書かれる左端を一致させたいのです。 (Y座標はわざとずらしてあります。) そのためには、DrawStringで文字を書いたときの幅を求めないといけない気がします。
どのように計算をしたらよろしいでしょうか?
|