VS2008/VB.net プロジェクトのダウンロード |
|
Partial Class Form1
' 印刷用オブジェクトと変数
Private pf As Font = New Font("MS 明朝", 12)
Private prContext As System.Drawing.Graphics
Private topMargin As Integer
Private leftMargin As Integer
' ******************************************************
' 実際の印刷処理
' ******************************************************
Private Sub pd_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
' 左側余白
leftMargin = e.MarginBounds.Left
' 上側余白
topMargin = e.MarginBounds.Top
' 現在のコンテキストを取得
prContext = e.Graphics
' 上部上限ライン
prContext.DrawLine( _
Pens.Black, _
leftMargin, _
topMargin, _
leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
topMargin _
)
' 左側ライン
prContext.DrawLine( _
Pens.Black, _
leftMargin, _
topMargin, _
leftMargin, _
topMargin + (e.PageBounds.Height - 2 * topMargin) _
)
' 右側ライン
prContext.DrawLine( _
Pens.Black, _
leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
topMargin, _
leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
topMargin + (e.PageBounds.Height - 2 * topMargin) _
)
' 下部下限ライン
prContext.DrawLine( _
Pens.Black, _
leftMargin, _
topMargin + (e.PageBounds.Height - 2 * topMargin), _
leftMargin + (e.PageBounds.Width - 2 * leftMargin), _
topMargin + (e.PageBounds.Height - 2 * topMargin) _
)
PrString(10, 100, "日本語表示")
PrString(1, 0, "日本語表示")
' 次のページがある場合は、True
' ここでは、1行印字して終わり
e.HasMorePages = False
End Sub
' ******************************************************
' 文字列を指定行の先頭から印字
' ******************************************************
Private Sub PrString(ByVal row As Integer, ByVal x As Integer, ByVal str As String)
Dim yPos As Integer = 0
' フォントの高さで一行の高さを決定
yPos = topMargin + (row - 1) * pf.GetHeight(prContext)
' 印字可能な左端から文字列をセットする
prContext.DrawString(str, pf, Brushes.Black, leftMargin + x, yPos)
End Sub
End Class
関連する記事
VB.NET : 印刷(2)
VB.NET : 印刷(3)
【VB.NET】印刷処理サンプル
|
|
Partial Class Form1
' 印刷処理の実体の定義
Private pd As System.Drawing.Printing.PrintDocument = New System.Drawing.Printing.PrintDocument
' プリンタ選択ダイアログ
Private prtDialog As PrintDialog = New PrintDialog()
' **********************************************
' 印刷プレビューの初期化
' **********************************************
Private Sub 印刷プレビューダイアログ_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles 印刷プレビューダイアログ.Load
' デスクトップ左上
印刷プレビューダイアログ.DesktopLocation = New System.Drawing.Point(0, 0)
' 印刷ドキュメント設定
Me.印刷プレビューダイアログ.Document = pd
' =====================================================
' ここから印刷ボタンの改造
' =====================================================
' 現在の印刷アイコンを取得
Dim tool As ToolStrip = 印刷プレビューダイアログ.Controls(1)
Dim img As System.Drawing.Image = tool.Items(0).Image
' 新しいツールバー用ボタンを作成
Dim ToolStripButton1 As New System.Windows.Forms.ToolStripButton()
ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
' 取得したイメージをセット
ToolStripButton1.Image = img
ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
ToolStripButton1.Name = "ToolStripButton1"
ToolStripButton1.Size = New System.Drawing.Size(23, 22)
ToolStripButton1.Text = "プリンタ選択"
' 現在の印刷ボタンを削除
tool.Items.RemoveAt(0)
' 新しい印刷ボタンを追加
tool.Items.Insert(0, ToolStripButton1)
' ボタンにイベント登録
AddHandler ToolStripButton1.Click, AddressOf print_start
' =====================================================
' ここまで( 印刷ボタンの改造 )
' =====================================================
' プリンタ選択ダイアログの設定
prtDialog.PrinterSettings = New System.Drawing.Printing.PrinterSettings()
prtDialog.Document = pd
End Sub
' ******************************************************
' 印刷ボタンの処理
' ******************************************************
Private Sub print_start(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
If prtDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
pd.Print()
End If
End Sub
End Class
関連する記事
VB.NET : 印刷(1)
PrintPreviewDialog のツールバーの印刷ボタンでプリンタ選択を可能にする
|
|
Public Class Form1
' **********************************************
' 印刷_Click を呼び出すメニュー
' **********************************************
Private Sub 印刷開始_MenuItem_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles 印刷開始_MenuItem.Click
Call 印刷_Click(Me.印刷, e)
End Sub
' **********************************************
' 通常の開始ボタン
' **********************************************
Private Sub 印刷_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles 印刷.Click
' デバッグ出力
Console.WriteLine(CType(sender, Button).Name)
Console.WriteLine(e.ToString)
' 印刷プレビュー開始
Me.印刷プレビューダイアログ.ShowDialog()
End Sub
' **********************************************
' 初期処理
' **********************************************
Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' 1) ステータスバーへメッセージ
' ( 呼び出し先で引数を使わないので Nothing を使用 )
Call 印刷_MouseLeave(Nothing, Nothing)
' 2) 印刷イベントの登録
' 印刷イベントをプレビューから呼び出せるように登録する
AddHandler pd.PrintPage, AddressOf pd_PrintPage
End Sub
' **********************************************
' マウス位置によるメッセージの変化
' **********************************************
Private Sub 印刷_MouseEnter( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles 印刷.MouseEnter
Me.ステータス.Text = "クリックして下さい"
End Sub
Private Sub 印刷_MouseLeave( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles 印刷.MouseLeave
Me.ステータス.Text = "印刷処理サンプルです"
End Sub
End Class
|
|