tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDrawStringで文字を書いたときの幅を求めるには?
記事No6438
投稿日: 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で文字を書いたときの幅を求めないといけない気がします。


  どのように計算をしたらよろしいでしょうか?

[ツリー表示へ]
タイトルRe: DrawStringで文字を書いたときの幅を求めるには?
記事No6441
投稿日: 2007/10/14(Sun) 17:58
投稿者よねKEN
Graphics.MeasureStringメソッドをどうぞ。

[ツリー表示へ]
タイトルRe^2: DrawStringで文字を書いたときの幅を求めるには?
記事No6442
投稿日: 2007/10/14(Sun) 21:32
投稿者トッチー
MSDNで「Graphics.MeasureStringメソッド」を見てみます。

直せたらまたカキコします。

ありがとうございました。

[ツリー表示へ]