プリンタへの出力
基本的なことだけれど、何せ滅多に実装しないもので、よく脳内メモリがリセット食らってしまいます。なので自分用の備忘録。
ソースコード
// using System.Drawing.Printing; // PrintDocument他のため
// using System.Windows.Forms; // PrintDialogのため
public void Print(string title, PrintPageEventHandler PrintPageEvent) {
// PrintDocumentオブジェクトの作成
PrintDocument pd = new PrintDocument();
// PrintPageイベントハンドラの追加
pd.PrintPage += new PrintPageEventHandler(PrintPageEvent);
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK) {
pd.PrinterSettings = printDialog.PrinterSettings; // 印刷設定
pd.Print(); // 印刷開始
}
}
// ページ印刷されるときに呼ばれる
private void PrintPageEvent(object sender, PrintPageEventArgs e) {
Graphics g = e.Graphics;
// ここに出力内容を実装
g.Dispose();
}
解説
- e.Graphicsに出力内容を描画すれば、内容がプリントされて出てきます。
- 描画領域を取得するには、g.VisibleClipBoundsを遣うのが解りやすいかと。
- 次のページを出力するにはe.HasMorePages=trueとする。
- プリンタ出力をキャンセルするには、e.Cancel=trueとしてあげればいいです。
印刷プレビューを作成するなら、Graphicsを引数に取った描画用の関数を共通に利用してあげれば楽ですね。
0 件のコメント :
コメントを投稿