C# winform 条形码打印

生成这样的条形码:每张纸显示8个,一个病人产生两个,最多可打印两页,我自己也写了代码,可是打出了黑屏,求大师,指点

我把这样的写成用户控件:

代码如下:

 public partial class UserPrintCode : UserControl
    {
        public string Bedno { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
        public string OperationNo { get; set; }
        public string Taici { get; set; }
        public object Code { get; set; }
        public UserPrintCode()
        {
            InitializeComponent();
        }
        public UserPrintCode(string bedNo,string name,string sex,
            int age,string operationno,string taici,object code)
        {

            InitializeComponent();

            this.Bedno = bedNo;
            this.Name = name;
            this.Sex = sex;
            this.Age = age;
            this.OperationNo = operationno;
            this.Taici = taici;
            this.Code = code;          
        }

        private void UserPrintCode_Load(object sender, EventArgs e)
        {
            lblbed_no.Text = Bedno;
            lblName.Text = Name;
            lblSex.Text = Sex;
            lblAge.Text = Age.ToString();
            lblOperation_no.Text = OperationNo;
            lbltaici.Text = Taici;

            barcodeControl2.Data = Code.ToString();
            barcodeControl2.Invalidate();
            //Invalidate();
        }
    }

调用页面如下:

代码如下:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //该纸张上要支持我想打几个人的就能打几个人,
            //最多不超过8个,不然字太小,一式两份;

            int pageCount = int.Parse(PageCount.Text.Trim());
            int printCount = int.Parse(PrintCount.Text.Trim());

            if (printCount > 8)
            {
                MessageBox.Show("最多一张纸打8个");
                return;
            }
            else if (printCount <= 8)
            {

                //目前测试这块
                CaptureScreen(printCount);
                PrintDocument pd = new PrintDocument();
                pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
                PrintPreviewDialog cppd = new PrintPreviewDialog();
                cppd.Document = pd;
                cppd.ShowDialog();

            }
            else
            {
                //未写
            }

        }

 


        void pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            //Graphics g = e.Graphics;
            //barcodeControl2.Draw(g, barcodeControl2.ClientRectangle, GraphicsUnit.Inch, 0.01f, 0, null);
            //g.Dispose();
            e.Graphics.DrawImage(memoryImage, 0, 0);

        }


        [System.Runtime.InteropServices.DllImport("gdi32.dll ")]
        public static extern long BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
        private Bitmap memoryImage;
        private void CaptureScreen(int printCout)
        {
            Panel panel1 = new Panel();
            int c = printCout % 2 == 0 ? printCout / 2 : printCout / 2 + 1;
            for (int i = 1; i <= c; i++)
            {
                for (int t = 1; t <= 2; t++)
                {
                    UserPrintCode u = new UserPrintCode("ffffff","ddddddd","男", 1,
                   "aaaaa","bbbbbb",txtValue.Text);  //随便给的值                
                    panel1.Controls.Add(u);
                    u.Size = new Size(190, 145);
                    u.Location = new Point(30 + t * 60, 20 + i * 50);
                    panel1.Controls.Add(u);
                }
            }

            Graphics mygraphics = panel1.CreateGraphics();//创建的是整个panel
            Size s = panel1.Size;//取panel大小
            memoryImage = new Bitmap(s.Width, s.Height, mygraphics);
            Graphics memoryGraphics = Graphics.FromImage(memoryImage);
            IntPtr dc1 = mygraphics.GetHdc();
            IntPtr dc2 = memoryGraphics.GetHdc();
            BitBlt(dc2, 0, 0, panel1.ClientRectangle.Width, panel1.ClientRectangle.Height, dc1, 0, 0, 13369376);
            mygraphics.ReleaseHdc(dc1);
            memoryGraphics.ReleaseHdc(dc2);
        }
    }

求为什么打出来的是黑屏????而且还只有一个黑屏??这是为什么???

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值