我正在尝试使用卡片打印机在特殊尺寸的卡片上打印。 我编写的代码在我的笔记本电脑上工作得很好,然后当我使用不同的屏幕分辨率时,我分析它还取决于屏幕尺寸。
所以请帮助我在代码中进行哪些修改以根据屏幕分辨率调整大小。
Panel pannel = null;
Bitmap MemoryImage;
public void GetPrintArea(Panel pnl)
{
Graphics g = this.CreateGraphics();
MemoryImage = new Bitmap(Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));
//Rectangle rect = new Rectangle(0, 0, Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));
pnl.DrawToBitmap(MemoryImage, new Rectangle(0, 0, Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY)));
MemoryImage.Save("pic.jpg");
}
public void Print(Panel pnl)
{
pannel = pnl;
GetPrintArea(pnl);
Graphics g = this.CreateGraphics();
printdoc1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Custom Size", Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));
PageSetupDialog setupDlg = new PageSetupDialog();
setupDlg.Document = printdoc1;
setupDlg.AllowOrientation = true;
setupDlg.AllowPaper = true;
setupDlg.AllowPrinter = true;
if (setupDlg.ShowDialog() == DialogResult.OK)
{
printdoc1.DefaultPageSettings =
setupDlg.PageSettings;
printdoc1.PrinterSettings =
setupDlg.PrinterSettings;
}
previewdlg.Document = printdoc1;
//previewdlg.ShowDialog();
DialogResult result = previewdlg.ShowDialog();
if (result == DialogResult.OK)
{
printdoc1.Print();
}
}
private void printdoc1_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = this.CreateGraphics();
Rectangle pagearea = new Rectangle(0, 0, Convert.ToInt32(3.375 * g.DpiX), Convert.ToInt32(2.125 * g.DpiY));
//pagearea.Width = 245;
// e.Graphics.PageUnit = GraphicsUnit.Millimeter;
e.Graphics.DrawImage(MemoryImage, pagearea);
}
private void printcardbtn_Click(object sender, EventArgs e)
{
Print(pnlcard);
}
任何建议将不胜感激。 问候...