更新 : 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#)