2009/07/23

[C#]プリンタ出力を行う

このエントリーをはてなブックマークに追加

プリンタへの出力

基本的なことだけれど、何せ滅多に実装しないもので、よく脳内メモリがリセット食らってしまいます。
なので自分用の備忘録。
ソースコード
// 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 件のコメント :

コメントを投稿