一个小票打印机,我做了一个程序去控制打印,目的是在小票的固定位置打印密码。(类似于移动充值卡)。
为了方便表达,我把程序中核心代码弄个小例子贴出来:using System.Drawing.Printing;namespace WindowsApplication1
{
public partial class Form1 : Form
{
string passWord = "1234";
string fullnumber = "9999";
System.Drawing.Printing.PrintDocument pdBays = new System.Drawing.Printing.PrintDocument();
public Form1()
{
InitializeComponent();
pdBays.PrintPage += new PrintPageEventHandler(pbay_PrintPage);
} private void button1_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 1000; i++)
{
pdBays.Print();
}
} public void pbay_PrintPage(object sender, PrintPageEventArgs ev)
{
Graphics dc = ev.Graphics; Pen pen = new Pen(Color.Black, 1);
Font drawFont = new Font("仿宋_GB2312", 12);
SolidBrush drawBrush = new SolidBrush(Color.Black);
PointF drawPoint = new PointF(30, 200); //这句可以隐藏“正在打印”窗体
pdBays.PrintController = new System.Drawing.Printing.StandardPrintController(); dc.DrawString("\n密码:" + passWord + "\n充值券编号:" + fullnumber, drawFont, drawBrush, drawPoint);
}
}
}
现在我清楚打印的位置应该修改 PointF drawPoint = new PointF(0, 200);
两参数一个是X坐标一个是Y坐标。经反复调整,(0,200)正好到了我想打印的那个位置。
但这只能保证第一张是正确的位置,接下来的就张就乱了。我的目标是:*不管打印多少张,都要和第一张的位置相同*这就应该去设置纸张的大小吧?应该如何定义纸张大小呢。
希望高手可以指点一下。最好能给出代码。
感激 感激!!
为了方便表达,我把程序中核心代码弄个小例子贴出来:using System.Drawing.Printing;namespace WindowsApplication1
{
public partial class Form1 : Form
{
string passWord = "1234";
string fullnumber = "9999";
System.Drawing.Printing.PrintDocument pdBays = new System.Drawing.Printing.PrintDocument();
public Form1()
{
InitializeComponent();
pdBays.PrintPage += new PrintPageEventHandler(pbay_PrintPage);
} private void button1_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 1000; i++)
{
pdBays.Print();
}
} public void pbay_PrintPage(object sender, PrintPageEventArgs ev)
{
Graphics dc = ev.Graphics; Pen pen = new Pen(Color.Black, 1);
Font drawFont = new Font("仿宋_GB2312", 12);
SolidBrush drawBrush = new SolidBrush(Color.Black);
PointF drawPoint = new PointF(30, 200); //这句可以隐藏“正在打印”窗体
pdBays.PrintController = new System.Drawing.Printing.StandardPrintController(); dc.DrawString("\n密码:" + passWord + "\n充值券编号:" + fullnumber, drawFont, drawBrush, drawPoint);
}
}
}
现在我清楚打印的位置应该修改 PointF drawPoint = new PointF(0, 200);
两参数一个是X坐标一个是Y坐标。经反复调整,(0,200)正好到了我想打印的那个位置。
但这只能保证第一张是正确的位置,接下来的就张就乱了。我的目标是:*不管打印多少张,都要和第一张的位置相同*这就应该去设置纸张的大小吧?应该如何定义纸张大小呢。
希望高手可以指点一下。最好能给出代码。
感激 感激!!
pdBays.DefaultPageSettings.PaperSize=new PaperSize( name, (int)( 纸宽 * 0.3937M * 10 ), (int)( 纸高 * 0.3937M * 10 ) );
上面纸宽纸高的单位为mm(毫米),定义纸张的张纸单位为1/10英寸
所以要转换一下
http://hi.baidu.com/webrecord/blog/item/65fd94ef045a1a17fdfa3c1a.html
太好了`搞定了!!谢谢sdfkfkd(特别)!!谢谢风语
!!结贴了