タイトル : DrawStringで文字を書いたときの幅を求めるには? 投稿日 : 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で文字を書いたときの幅を求めないといけない気がします。 どのように計算をしたらよろしいでしょうか? |