我知道以前曾经问过,但我无法得到答案。我知道我的显示器的分辨率低于打印机的分辨率,但无论如何。我有一个包含标签和图片框的面板。当我在纸上打印时,它具有高质量的屏幕捕获功能。我无法找到一种方法来获得合适的印刷品。这是我的代码:
在我的构造函数中:
printdoc1.PrintPage += new PrintPageEventHandler(printdoc1_PrintPage);
printdoc1.DefaultPageSettings.PaperSize = new PaperSize("", 275, 850);
事件处理者和方法
public void GetPrintArea(Panel pnl)
{
MemoryImage = new Bitmap(pnl.Width, pnl.Height);
Rectangle rect = new Rectangle(0, 0, pnl.Width, pnl.Height);
pnl.DrawToBitmap(MemoryImage, new Rectangle(0, 0, pnl.Width, pnl.Height));
}
protected override void OnPaint(PaintEventArgs e)
{
if (MemoryImage != null)
{
e.Graphics.DrawImage(MemoryImage, 0,0);
base.OnPaint(e);
}
}
void printdoc1_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle pagearea = e.PageBounds;
e.Graphics.DrawImage(MemoryImage, 0,0);
}
最后,我的打印按钮内部是什么:
GetPrintArea(panelImpresion);
previewdlg.Document = printdoc1;
previewdlg.ShowDialog();