一个小票打印机,我做了一个程序去控制打印,目的是在小票的固定位置打印密码。(类似于移动充值卡)。
为了方便表达,我把程序中核心代码弄个小例子贴出来: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)正好到了我想打印的那个位置。
但这只能保证第一张是正确的位置,接下来的就张就乱了。我的目标是:*不管打印多少张,都要和第一张的位置相同*这就应该去设置纸张的大小吧?应该如何定义纸张大小呢。
希望高手可以指点一下。最好能给出代码。
感激 感激!!

解决方案 »

  1.   


    pdBays.DefaultPageSettings.PaperSize=new PaperSize( name, (int)( 纸宽 * 0.3937M * 10 ), (int)( 纸高 * 0.3937M * 10 ) );
    上面纸宽纸高的单位为mm(毫米),定义纸张的张纸单位为1/10英寸
    所以要转换一下
      

  2.   

    http://topic.csdn.net/t/20060917/13/5027616.html
    http://hi.baidu.com/webrecord/blog/item/65fd94ef045a1a17fdfa3c1a.html
      

  3.   


    太好了`搞定了!!谢谢sdfkfkd(特别)!!谢谢风语
    !!结贴了