我的项目是从表单
打印一个面板但决议太糟糕了
我查了很多帖子
知道主要问题是显示器和打印机之间的DPI差异
我尝试将我的位图设置得很大并以正确的尺寸打印我想要的
但似乎我不能很好地设置它们
分辨率仍然很差,尺寸变化像无法移动
如果我将位图大小设置为大于10k
它将从打印预览对话框中消失
我的代码
Bitmap MemoryImage;
public void GetPrintArea(Panel pnl)
{
MemoryImage = new Bitmap(9000,9000);
Rectangle rect = new Rectangle(0,0,9000,9000);
pnl.DrawToBitmap(MemoryImage, rect);
}
void doc_PrintPage(object sender, PrintPageEventArgs e)
{
GetPrintArea(flowLayoutPanel1);
Rectangle pagearea = new Rectangle(0,0,5000, 5000);
e.Graphics.DrawImage(MemoryImage,pagearea);
}
PrintDocument doc = new PrintDocument();
private void button1_Click(object sender, EventArgs e)
{
PrintDocument doc = new PrintDocument();
doc.PrintPage += new PrintPageEventHandler(doc_PrintPage);
PrintPreviewDialog dlg = new PrintPreviewDialog();
PaperSize psize = new PaperSize("A4 300DPI", 2480, 3508);
doc.PrinterSettings.DefaultPageSettings.PaperSize = psize;
dlg.Document = doc;
dlg.ShowDialog();
}
我想获得面板并将其打印在A4上,其分辨率如打印word文档
我花了将近一周时间尝试解决这个问题>"<
Plz救救我......
答案 0 :(得分:2)
我花了将近一个星期的时间尝试解决这个问题
即使你再试一周也不能让它工作,因为你走错了路。
知道主要问题是显示器和打印机之间的DPI差异
你知道这个问题,并且知道没有解决办法,你仍在继续尝试。
<强>解决方案:强>
如果您想在报表上呈现一些数据,我不认为打印面板是解决方案。您应该考虑在form of a report
中打印报告。例如,请考虑制作RDLC/Crystal
报告,并将所需数据放在该报告中。简而言之,使用报告进行报告。