投稿者 sayama  (社会人) 投稿日時 2023/11/9 23:40:28
環境:Win11Pro VS2022Community VB.net .netVer 4.8

新規作成した画像上で、決まったスペースに住所を右詰めで折り返して描画したいのですが、描画した文字列の一部が入れ替わってしまう現象が生じてしまい困っています。解決策があればご指導いただけますよう、よろしくお願いいたします。

’作成するイメージ
 Img = New Bitmap(1050, 1500)
 Dim g As Graphics = Graphics.FromImage(Img)
Dim Brs As SolidBrush
Brs = New SolidBrush(Color.White)
g.FillRectangle(Brs, 0, 0, Img.Width, Img.Height)

’このイメージに次の文字列を右詰めで折り返して描画したい
        Dim addFnt As New Font("メイリオ", 7.5, FontStyle.Regular, GraphicsUnit.Millimeter)
        Dim str As String = ""
        Dim cs As Size
        Dim sf As New StringFormat()                                        'StringFormatを作成
        sf.FormatFlags = StringFormatFlags.DirectionRightToLeft         '右から左に表示する
        str = "〒100-0001 東京都 新宿区 新宿 第一〇×ビル1階 108号室"
        cs = TextRenderer.MeasureText(str, addFnt)          ’文字列を描画した際の大きさを測定
        str += "TEL:03-0000-0000"
        Dim rct As New RectangleF(10, 10, cs.Width, cs.Height * 2)  ’文字列2行分の大きさで描画スペースを作成
        g.DrawString(str, addFnt, Brushes.Black, rct, sf)        ’右から左に文字列を描画(右詰め)

’期待するイメージ
〒100-0001 東京都 新宿区 新宿 第一〇×ビル1階 108号室
                      TEL:03-0000-0000
’実際に出力されるイメージ
東京都 新宿区 新宿 第一〇×ビル1階 108号室 100-0001〒
                      TEL:03-0000-0000

’同様なことを単純な文字列 ”\20,000-”とやってみたのですが、
’出力されるイメージは ”-\20,000” と描画されてしまいます。

何がなんやら苦悶しています。。。。。お助けください。