更新 : 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();
printPreviewDialog1.Show();
}
コードのコンパイル方法
この例には、次の項目が必要です。
PrintPage イベント ハンドラを持つ printDocument1 という名前の PrintDocument コンポーネント。
Document プロパティが printDocument1 に設定されている、printPreviewDialog1 という名前の PrintPreviewDialog コンポーネント。
Click イベント ハンドラを持つ printButton という名前の Button。
このコード例は、既存のイベント ハンドラを置き換えます。フォームの印刷プレビューは、printButton をクリックすると表示されます。
堅牢性の高いプログラム
次の条件を満たす場合は、例外が発生する可能性があります。
プリンタへのアクセス許可がない。
アンマネージ コードを使用するためのアクセス許可がない。
プリンタがインストールされていない。
[印刷プレビュー] ダイアログ ボックスが既に破棄されている。これは、[印刷プレビュー] ダイアログ ボックスを閉じた後に発生します。
セキュリティ
このコード例を実行するには、アンマネージ コードを実行するためのアクセス許可と、プリンタへのアクセス許可が必要です。
参照
概念
ユーザー インターフェイスのデザイン (Visual C#)