VS2005の VBで開発を行っています。
印刷のプレビュー画面を作成するために、
e.Graphics.DrawString(S, Font, Brushes.Black, rr, format1)
を使用して文字列を表示していますが、
文字列Sがすべて1バイト文字列の場合には、マルチラインの場合には
同じ長さに分割されて表示されますが、
文字列の先頭に2バイト文字列が含まれると、2バイト文字列の最後の文字の
直前、または、1バイト2バイトの区切りで分割されてしまいます。
何か対処方法はないでしょうか?
以下 実証コードです。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.PrintPreviewDialog1.Document = Me.PrintDocument1
PrintPreviewDialog1.WindowState = FormWindowState.Maximized
PrintPreviewDialog1.ShowDialog()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim format1 As New StringFormat(StringFormatFlags.NoClip)
Dim rr As Rectangle = New Rectangle(20, 20, 100, 100)
Dim rr1 As Rectangle = New Rectangle(20, 220, 100, 100)
Dim rr2 As Rectangle = New Rectangle(20, 420, 100, 100)
Dim s, S1, S2 As String
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890-01234567890ABCDEFG"
S1 = "漢字 ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890-01234567890/ABCDEFG"
S2 = StrConv(S1, VbStrConv.Wide)
format1.Alignment = StringAlignment.Near
format1.LineAlignment = StringAlignment.Center
e.Graphics.DrawString(s, Me.Font, Brushes.Black, rr, format1)
e.Graphics.DrawString(S1, Me.Font, Brushes.Black, rr1, format1)
e.Graphics.DrawString(S2, Me.Font, Brushes.Black, rr2, format1)
End Sub
End Class
s1を表示すると、漢字の次に改行しています。
すべて全角文字にすると、長さで自動的に分割されます