健康一贴灵,专注医药行业管理信息化

在C#中利用Graphics 直接打印文字、方框、横线等内容

1、添加控件

      在winform中添加如下printDialog、printDocument1、printPreviewDialog和pageSetupDialog 控件,

    并将printDialog、printPreviewDialog和pageSetupDialog控件的Document属性选择printDocument1

 2、相关代码

以下为具体的打印位置代码,要放在“printDocument1_PrintPage”事件中

复制代码
string rq = DateTime.Now.ToString("yyyy-MM-dd");
                    int num1 = 200;
                    //标签文字开始X点
                    int x0 = 5;
                    int x1 = 100;
                    int x2 = 250;

                    int y1 = 70;
                    //int y2 = 275;
                    StringFormat stringFormat = new StringFormat();
                    stringFormat.Alignment = StringAlignment.Center;
                    stringFormat.LineAlignment = StringAlignment.Center;
                    Pen pen = new Pen(Color.Black, 1f);
                    Font font = new Font("黑体", 18f, FontStyle.Bold);
                    Font font2 = new Font("宋体", 13f, FontStyle.Bold);
                    Brush black = Brushes.Black;
                    //打印SMP文件编号 
                    e.Graphics.DrawString(smpName, font2, black, 80, 0);
                    //创建黑色笔。   
                    Pen blackPen = new Pen(Color.Black, 1);
                    // 创建矩形.
                    Rectangle rect = new Rectangle(0, 18, 280, 331);
                    // 绘制到屏幕上。
                    e.Graphics.DrawRectangle(blackPen, rect);
                    e.Graphics.DrawString(" 物料  产品  标签", font, black, 15, 30);
                    /////////打印勾选用的方框
                    rect = new Rectangle(83, 32, 20, 20);
                    // 绘制到屏幕上。
                    e.Graphics.DrawRectangle(blackPen, rect);
                    rect = new Rectangle(163, 32, 20, 20);
                    // 绘制到屏幕上。
                    e.Graphics.DrawRectangle(blackPen, rect);
                    ////////////



                    e.Graphics.DrawString("品    名 :" + txtName.Text, font2, black, 5, y1);
                    y1 = y1 + 19;
                    Point pt1 = new Point(x1, y1);//实例化一个Point类
                    Point pt2 = new Point(x2, y1);//再实例化一个Point类
                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    y1 = y1 + 17;
                    e.Graphics.DrawString("代    码 :" + txtCode.Text, font2, black, 5, y1);
                    y1 = y1 + 19;
                    pt1 = new Point(x1, y1);//实例化一个Point类
                    pt2 = new Point(x2, y1);//再实例化一个Point类
                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    y1 = y1 + 17;
                    e.Graphics.DrawString("批    号 :" + txtBatchNo.Text, font2, black, 5, y1);
                    y1 = y1 + 19;
                    pt1 = new Point(x1, y1);//实例化一个Point类
                    pt2 = new Point(x2, y1);//再实例化一个Point类
                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    y1 = y1 + 17;
                    e.Graphics.DrawString("规    格 :" + txtSpec.Text, font2, black, 5, y1);
                    y1 = y1 + 19;
                    pt1 = new Point(x1, y1);//实例化一个Point类
                    pt2 = new Point(x2, y1);//再实例化一个Point类
                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    y1 = y1 + 17;
                    e.Graphics.DrawString("数    量 :" + txtQty.Text, font2, black, 5, y1);
                    y1 = y1 + 19;
                    pt1 = new Point(x1, y1);//实例化一个Point类
                    pt2 = new Point(x2, y1);//再实例化一个Point类
                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    y1 = y1 + 17;
                    e.Graphics.DrawString("操作工序 :" + comboBox1.Text, font2, black, 5, y1);
                    y1 = y1 + 19;
                    pt1 = new Point(x1, y1);//实例化一个Point类
                    pt2 = new Point(x2, y1);//再实例化一个Point类

                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    y1 = y1 + 17;
                    e.Graphics.DrawString("操 作 人 :", font2, black, 5, y1);
                    y1 = y1 + 19;
                    pt1 = new Point(x1, y1);//实例化一个Point类
                    pt2 = new Point(x2, y1);//再实例化一个Point类
                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    y1 = y1 + 17;
                    e.Graphics.DrawString("生产日期 :" + txtDate.Text, font2, black, 5, y1);
                    y1 = y1 + 19;
                    pt1 = new Point(x1, y1);//实例化一个Point类
                    pt2 = new Point(x2, y1);//再实例化一个Point类
                    e.Graphics.DrawLine(blackPen, pt1, pt2);

                    //最下边打印公司名称
                    e.Graphics.DrawString(companyName, font2, black, 30, 350);
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
复制代码

 

以下为打印按钮的代码

复制代码
            if (radioButton1.Checked == false && radioButton2.Checked == false)
            {
                MessageBox.Show("物料和产品标签必须选择一个", "提示");
                return;
            }

            if (txtBatchNo.Text == "")
            {
                MessageBox.Show("批次不能为空!", "提示");
                txtBatchNo.Focus();
                return;
            }
            int i = (int)numericUpDown1.Value;
            for (int k = 1; k <= i; k++)
            {
                printDocument1.Print();

            }
复制代码

 

posted @   一贴灵  阅读(345)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
学以致用,效率第一
点击右上角即可分享
微信分享提示