[System.Runtime.InteropServices.DllImportAttribute( "gdi32.dll ")]
private static extern bool BitBlt(
IntPtr hdcDest, // handle to destination DC
int nXDest, // x-coord of destination upper-left corner
int nYDest, // y-coord of destination upper-left corner
int nWidth, // width of destination rectangle
int nHeight, // height of destination rectangle
IntPtr hdcSrc, // handle to source DC
int nXSrc, // x-coordinate of source upper-left corner
int nYSrc, // y-coordinate of source upper-left corner
System.Int32 dwRop // raster operation code
);
Bitmap myImage;
private void button1_Click(object sender, EventArgs e)
{
Graphics g1 = panel1.CreateGraphics();
myImage = new Bitmap(this.panel1.Width, this.panel1.Height, g1);
Graphics g2 = Graphics.FromImage(myImage);
IntPtr dc1 = g1.GetHdc();
IntPtr dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, this.panel1.Width, this.panel1.Height, dc1, 0, 0, 13369376);
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);
myImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
PageSetupDialog mypgDialog = new PageSetupDialog();
mypgDialog.Document = printDocument1;
try
{
mypgDialog.ShowDialog();
}
catch
{
printDocument1.PrintController.OnEndPrint(printDocument1, new System.Drawing.Printing.PrintEventArgs());
}
//*****************************
PrintPreviewDialog dlg = new PrintPreviewDialog();
dlg.Document = printDocument1;
dlg.Document.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("cardc", 324, 204);
if (dlg.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
g1.Dispose();
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(myImage, new Point(10, 10));
}