Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim table As New DataTable table.Columns.Add("Naming", GetType(String)) table.Columns.Add("PostalNo", GetType(String)) table.Columns.Add("Address", GetType(String)) table.Columns.Add("Year", GetType(Integer)) table.Columns.Add("Sex", GetType(String)) table.Rows.Add("徳川家康", "111-1111", "千代田区千代田1-1", 40, "男") table.Rows.Add("楠正成", "222-2222", "奈良県吉野市1-100", 30, "男") table.Rows.Add("後桜町天皇", "222-2222", "京都府1-1", 20, "女") Dim report As Bitmap = DrawReport(New Size(640, 800), table) PictureBox1.Image = report End Sub Private sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis") ''' <summary> ''' 文字列が指定された幅になるようにスペースを埋め込みます。 ''' 文字列のサイズはShiftJISに換算して計算します。 ''' <para>指定された文字列が幅を上回る場合の処理は未実装です。</para> ''' </summary> ''' <param name="value">対象の文字列。</param> ''' <param name="size">幅。通常の印字領域の幅をバイト数で指定します。</param> ''' <param name="align">右寄せか左寄せか。スペースを埋め込む方向を変化させます。</param> Private Function Fit(value As String, size As Integer, align As LeftRightAlignment) As String Dim byteCount As Integer = sjis.GetByteCount(value) If size = byteCount Then '領域のサイズと実際の値のサイズが一致する場合何もする必要なし。 Return value ElseIf size < byteCount Then '領域のサイズより実際の値のサイズが大きい場合。 '実際の値を切り詰めて表示するか、領域サイズを広げるなど仕様変更が必要。 'ここでは仮にこのまま返す。(=がたがたになる。) Return value Else '領域のサイズより実際の値のサイズが小さい場合。 '領域サイズになるように" "をくっつけて返す。 Dim result As String Dim padding As New String(" "c, size - byteCount) If align = LeftRightAlignment.Left Then result = value & padding Else result = padding & value End If Return result End If End Function End Class