软件编程
位置:首页>> 软件编程>> C#编程>> C#实现自定义打印文字和图片的示例代码

C#实现自定义打印文字和图片的示例代码

作者:ViperL1  发布时间:2021-05-30 02:35:20 

标签:C#,打印,文字,图片

C#中打印其实就是自己绘图+调用系统打印函数,于是便有了以下操作

1.调用打印机设置

如果你想在打印前设置打印机属性(或者切换打印机),请务必添加这段代码,否则电脑会直接按照预设的设置进行打印(打印机都没法选)

//打印机设置
PrintDialog printDialog = new PrintDialog();
printDialog.Document = ptDoc;
printDialog.ShowDialog();

ptDoc就是打印的文件内容,会在后面解释

2.关联文档

等于我们需要新建一个空白的画布,然后把我们需要的文字,图片,线条依次摆上去

PrintDocument ptDoc = new PrintDocument();
ptDoc.DocumentName = "测试文件";//在队列中显示的名字
ptDoc.PrintPage += PtDoc_PrintPage;//关联内容生成方法

3.绘制内容

本次测试的内容分为:横排文字,竖排文字,图片,具体内容和位置可以通过修改参数进行调整

private void PtDoc_PrintPage(object sender, PrintPageEventArgs e)
       {
           e.Graphics.Clear(Color.White);
           // 开始绘制文档
           // 默认为横排文字
           e.Graphics.DrawString("标题:打印测试",
                                   new Font(new FontFamily("宋体"), 40, FontStyle.Bold),
                                   System.Drawing.Brushes.Red,
                                   170, 10);
           // 横线
           e.Graphics.DrawLine(Pens.Black, 20, 110, 800, 110);
           // 竖排文字
           e.Graphics.DrawString("内容",
                                   new Font(new FontFamily("宋体"), 14, FontStyle.Bold),
                                   System.Drawing.Brushes.Black,
                                   20, 120,
                                   new StringFormat(StringFormatFlags.DirectionVertical));

e.Graphics.DrawString( this.txtName.Text,
                       new Font(new FontFamily("宋体"), 14, FontStyle.Bold),
                       System.Drawing.Brushes.Black,
                       20, 200);

//e.Graphics.DrawImage(Image.FromFile(Path), 20, 250, 800, 100);    //会造成失真

Image imgsample = Image.FromFile(Path);
           Point pt = Zoom(imgsample.Width, imgsample.Height, 200);
           e.Graphics.DrawImage(imgsample, 20, 250, pt.X, pt.Y);//直接打印可能出现太大打印不下
       }

        同时直接打印图片的话可能造成图片太大,可以写一个缩放方法来限制图片的最大尺寸

private Point Zoom(int x, int y,int maxWidth)
       {
           Point pt = new Point(x, y);
           while (pt.X > maxWidth)
           {
               pt.X /= 2;
               pt.Y /= 2;
           }
           return pt;
       }

最后结果如下

C#实现自定义打印文字和图片的示例代码

来源:https://blog.csdn.net/weixin_37878740/article/details/124233949

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com