110,536
社区成员
发帖
与我相关
我的任务
分享
PrintDocument docToPrint =new PrintDocument();
docToPrint.PrintPage += new PrintPageEventHandler(docToPrint_PrintPage);
docToPrint.OriginAtMargins = false;
//PrintPreviewDialog pt = new PrintPreviewDialog();
//pt.Document = docToPrint;
//if (pt.ShowDialog() == DialogResult.OK)
//{
//PrintPreviewDialog
docToPrint.Print();
//}
private void docToPrint_PrintPage(object sender,PrintPageEventArgs e)
{
System.Drawing.Image image = System.Drawing.Image.FromStream(this.streamToPrint);
double width = Convert.ToDouble(image.Width);
double height = Convert.ToDouble(image.Height);
if (width > height)
{
image.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone);
double conterValue = width;
width = height;
height = conterValue;
}
docToPrint.DefaultPageSettings.Margins.Top = 0;
docToPrint.DefaultPageSettings.Margins.Bottom = 0;
docToPrint.DefaultPageSettings.Margins.Left = 0;
docToPrint.DefaultPageSettings.Margins.Right = 0;
double pageX = Convert.ToDouble(docToPrint.DefaultPageSettings.PaperSize.Width - left - right);
double pageY = Convert.ToDouble(docToPrint.DefaultPageSettings.PaperSize.Height - top - bottom);
double y = top;
double x = left;
if ((width / pageX) > (height / pageY))
{
width = pageX;
height = image.Height * pageX / image.Width;
y = (pageY - height) / 2 + top;
}
else
{
height = pageY;
width = image.Width * pageY / image.Height;
x = (pageX - width) / 2 + left;
}
e.Graphics.DrawImage(image, (int)x, (int)y, (int)width, (int)height);
}