方法 : フォームを印刷する

更新 : 2007 年 11 月

以下のコード例は、現在のフォームのコピーを印刷する方法を示しています。

使用例

[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern long BitBlt (IntPtr hdcDest, int nXDest, int nYDest, 
    int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
private Bitmap memoryImage;
private void CaptureScreen()
{
    Graphics mygraphics = this.CreateGraphics();
    Size s = this.Size;
    memoryImage = new Bitmap(s.Width, s.Height, mygraphics);
    Graphics memoryGraphics = Graphics.FromImage(memoryImage);
    IntPtr dc1 = mygraphics.GetHdc();
    IntPtr dc2 = memoryGraphics.GetHdc();
    BitBlt(dc2, 0, 0, this.ClientRectangle.Width,
        this.ClientRectangle.Height, dc1, 0, 0, 13369376);
    mygraphics.ReleaseHdc(dc1);
    memoryGraphics.ReleaseHdc(dc2);
}
private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    e.Graphics.DrawImage(memoryImage, 0, 0);
}
private void printButton_Click(System.Object sender, System.EventArgs e)
{
    CaptureScreen();
    printDocument1.Print();
}

コードのコンパイル方法

この例には、次の項目が必要です。

  • PrintPage イベント ハンドラを持つ printDocument1 という名前の PrintDocument コンポーネント。

  • Click イベント ハンドラを持つ printButton という名前の Button

このコード例は、既存のイベント ハンドラを置き換えます。フォームは、printButton をクリックすると印刷されます。

堅牢性の高いプログラム

次の条件を満たす場合は、例外が発生する可能性があります。

  • プリンタへのアクセス許可がない。

  • アンマネージ コードを使用するためのアクセス許可がない。

  • プリンタがインストールされていない。

セキュリティ

このコード例を実行するには、アンマネージ コードを実行するためのアクセス許可と、プリンタへのアクセス許可が必要です。

参照

概念

ユーザー インターフェイスのデザイン (Visual C#)

その他の技術情報

Windows フォームのカスタマイズ、表示、および印刷

Visual C# ガイド ツアー