读书人

C# 怎么获取打印机分辨率

发布时间: 2013-01-23 10:44:50 作者: rapoo

C# 如何获取打印机分辨率
小弟新转C#一周 ,现在在完成一个打印的功能,
我用 一张图片做背景 当打印格式,然后在相应的地方添加数据,
我装了虚拟打印机,那个打印位置,我是一点一点的推测出来的,全都写死了,(有点欠妥当);
能不能有个方法来 获取打印机信息 获取不同打印机分辨率,那样根据打印机分辨率来设置来确定数据打印位置?


private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//Create font and brush
Font drawFont = new Font("黑体", 20);
Font drawFont1 = new Font("黑体", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);

Image memoryImage = Image.FromFile(Application.StartupPath + @"\back.jpg"); //背景格式文件路径
e.Graphics.DrawImage(memoryImage, 0, 0, 825, 1178);

Image memoryImage1 = Image.FromFile(Application.StartupPath + @"\top.jpg"); //测试头像文件路径
e.Graphics.DrawImage(memoryImage1, 583, 200, 170, 240);
//基本信息
e.Graphics.DrawString(name, drawFont, drawBrush, 150, 218);//这些数据位置全是一点点试出来的,不科学啊
e.Graphics.DrawString(sex, drawFont, drawBrush, 460, 218);
e.Graphics.DrawString(unit, drawFont, drawBrush, 150, 276);
e.Graphics.DrawString(site, drawFont, drawBrush, 150, 334);
e.Graphics.DrawString(Tel, drawFont, drawBrush, 150, 392);


[解决办法]
e.Graphics.DpiX 水平分辨率

e.Graphics.DpiY 垂直分辨率


[解决办法]
//获取打印机分辨率
System.Drawing.Printing.PrinterSettings prtSet = new System.Drawing.Printing.PrinterSettings();
prtSet.PrinterName = cmdLocalPrinter.Text;
System.Drawing.Printing.PrinterResolution[] prlAry = new System.Drawing.Printing.PrinterResolution[prtSet.PrinterResolutions.Count];
prtSet.PrinterResolutions.CopyTo(prlAry, 0);
int dpi = prlAry[prtSet.PrinterResolutions.Count - 1].X;
[解决办法]
你确定分辨率怎么写公式安排坐标啊?

读书人网 >C#

热点推荐