そこで、いくつかのテスト結果情報を格納するクラスと、その情報をユーザーに表示するコントロールを作成しました。このクラスに印刷機能を配置して、コントロールをページ全体のサイズで描画して印刷したいと考えています。ただし、常に空白になります。他のタイプの値である可能性があるため、コードはパネルをコントロールとして認識します。私が見逃している単純なものがあるに違いないと思います。
void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
System.Drawing.Size oldSize = printData.Size;
printData.Size = new System.Drawing.Size(e.MarginBounds.Width, e.MarginBounds.Height);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(printData.Size.Width, printData.Size.Height);
InvertZOrderOfControls(printData.Controls);
printData.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, printData.Size.Width, printData.Size.Height));
InvertZOrderOfControls(printData.Controls);
e.Graphics.DrawImage(bitmap, e.MarginBounds.Location);
bitmap.Save(@"C:\Users\jdudley\Documents\File.bmp");
printData.Size = oldSize;
}
このスレッドのこのアドバイスに従って、コントロールの Z オーダーを逆にしましたが、何も変わりませんでした。保存呼び出しがデバッグ用に追加されました。コントロールなしでパネルの背景色を実際にレンダリングしているように見えます。
編集:これは印刷の文脈にありますが、私はこれまで印刷に問題はありませんでした. 私のエラーは、ビットマップの作成にあります。追加した保存行は、空のビットマップ ファイルを作成するため、これを証明しています。