■VB.Netで印刷(自作クラス)

 VB.Netで印刷を行う為、クラスを作成しました。
 欲しいのは紙に1文字単位で指定、印刷や罫線を引く事です。
 以下のような感じです。


 このような印刷をするためにクラスを作成しました。
 細かい説明はクラスのソースに書いてあります。
 まだクラスに慣れていないので見にくい所があるかもしれません。
 何かあればブログ へお願いします。

 ■使い方
  前回を参考に。印刷準備は変わりません。
  PrintPageイベントの中で使います
  サンプル 

       '### 印刷処理 --- クラスを使った文字列指定版のサンプル 実装部 --- #################################################################
        'クラスを使ってプリント設定を取得して印刷
        Dim clsPrt As New cls_print_
        Dim s10 As String = ""

        'プリンタの初期設定を行う
        clsPrt.Printer_Setting(e, Me.PrintDocument1, New Point(140, 50))

        '印刷出来る文字数分の文字列を作成       
        For i10 As Integer = 0 To clsPrt.Text_Count.X - 1
            s10 = s10 & (i10 Mod 10).ToString
        Next

        '文字列を10行おきに印刷(1行印刷メソッドを使用)
        For i10 As Integer = 0 To clsPrt.Text_Count.Y - 1 Step 10
            clsPrt.Print_Moji_Line(e, s10, i10)
        Next

        '最終行に設定を印刷
        clsPrt.Print_Moji_Line(e, clsPrt.Text_FontN & " " & clsPrt.Text_Font_Size.ToString & _
           "Point " & "印刷可能文字数 X:" & clsPrt.Text_Count.X.ToString & " Y:" & clsPrt.Text_Count.Y.ToString & _
           " 文字数指定による伝票印刷設定のサンプル", clsPrt.Text_Count.Y - 1)

        '座標指定印刷
        clsPrt.Print_Moji(e, New PointF(0, 22), "テスト印刷")

        '座標指定印刷 長さ・左右寄せ指定
        clsPrt.Print_Moji(e, New PointF(0, 23), (1250).ToString("#,###"), 12, "R")

        '座標指定印刷 フォント指定
        clsPrt.Print_Moji(e, New PointF(0, 24), "テスト印刷", New Font(clsPrt.Text_FontN, 30))

        '罫線印刷
        '縦罫線
        For i10 As Integer = 0 To clsPrt.Text_Count.X
            '太さと破線の間隔を設定した場合
            clsPrt.Draw_Line(e, New PointF(i10, 0), New PointF(i10, clsPrt.Text_Count.Y - 1), 1, 5.0F)
        Next
        '横罫線
        For i10 As Integer = 0 To clsPrt.Text_Count.Y
            '太さ・破線の間隔を省略
            clsPrt.Draw_Line(e, New PointF(0, i10), New PointF(clsPrt.Text_Count.X, i10))
        Next

        '微調整印刷
        clsPrt.Pr_TTop = New PointF(10, 10) '全体の微調整設定
        clsPrt.Print_Moji(e, New PointF(0, 22), "テスト印刷")
        clsPrt.Print_Moji(e, New PointF(0, 23), (1250).ToString("#,###"), 12, "R")
        clsPrt.Print_Moji(e, New PointF(0, 24), "テスト印刷", New Font(clsPrt.Text_FontN, 30))

 ■簡単な解説

  ●初期化
        'プリンタの初期設定を行う
        clsPrt.Printer_Setting(e, Me.PrintDocument1, New Point(140, 50)
    ○初期化です。指定した紙の大きさに横140,縦50文字として初期化します。
     改ページした場合毎回実行する必要があります。

  ●文字印刷
       '座標指定印刷
        clsPrt.Print_Moji(e, New PointF(0, 22), "テスト印刷")
   ○横0、縦22文字目に"テスト印刷"と印刷します。

        '座標指定印刷 長さ・左右寄せ指定
        clsPrt.Print_Moji(e, New PointF(0, 23), (1250).ToString("#,###"), 12, "R")
   ○横0、縦23文字目から12文字の間で右寄せで印刷(最後を"L"にすると右寄せで印刷します。)
  
  ●罫線
        '横罫線
        For i10 As Integer = 0 To clsPrt.Text_Count.Y
            '太さ・破線の間隔を省略
            clsPrt.Draw_Line(e, New PointF(0, i10), New PointF(clsPrt.Text_Count.X, i10))
        Next
   ○初期化後.Text_Count.Yプロパティには縦方向に印刷できる文字数が保存されます
    同様に.Text_Count.Xプロパティには横方向に印刷できる文字数が入ります
    印刷できる範囲に横罫線を引いています。

  ※上にある画像はサンプルプログラムで実際に印刷した物です。
   これで印刷が少しは楽になるかな・・・
   直しながら使っているクラスです。気になる部分があればブログにコメント下さい。


トップへ戻る