Я пытаюсь напечатать панель с картинками, надписями и текстовыми полями. Я хочу напечатать его на бумаге формата А4, поэтому панель имеет 595x842. Я пробовал:Пытается напечатать панель в C#
private void print_Click(object sender, EventArgs e)
{
PrintPanel(panel1);
}
private void PrintPanel(Panel pnl)
{
PrintDialog myPrintDialog = new PrintDialog();
System.Drawing.Bitmap memoryImage = new System.Drawing.Bitmap(pnl.Width, pnl.Height);
pnl.DrawToBitmap(memoryImage, pnl.ClientRectangle);
if (myPrintDialog.ShowDialog() == DialogResult.OK)
{
System.Drawing.Printing.PrinterSettings values;
values = myPrintDialog.PrinterSettings;
myPrintDialog.Document = printDocument1;
printDocument1.PrintController = new StandardPrintController();
printDocument1.Print();
}
printDocument1.Dispose();
}
Когда я пытаюсь напечатать это я иду к One Note и все, что я получаю белую страницу. В чем проблема?
Я немного изменил код. Теперь я получаю некоторый вывод, но это еще не хорошо ... Это код, который я использовал:
private void print_Click(object sender, EventArgs e)
{
System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();
doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(doc_PrintPage);
doc.Print();
}
private void doc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Panel grd = new Panel();
Bitmap bmp = new Bitmap(grd.Width, grd.Height, grd.CreateGraphics());
grd.DrawToBitmap(bmp, new Rectangle(0, 0, grd.Width, grd.Height));
RectangleF bounds = e.PageSettings.PrintableArea;
float factor = ((float)bmp.Height/(float)bmp.Width);
e.Graphics.DrawImage(bmp, bounds.Left, bounds.Top, bounds.Width, factor * bounds.Width);
}
И я получаю это:
http://i.stack.imgur.com/HB1EH.png
Может кто-то помочь?
Вы рисуете панель в 'memoryImage', но тогда вы никогда ее не используете. – Cameron
Итак ... Что мне делать с этим? Извините, но я не опытный>. < – Andrew
Вы не разместили свой обработчик событий для события PrintDocument.PrintPage. Наверное, потому что ты забыл написать это. И да, это ничего не производит, кроме белой страницы. –