C#实现自定义打印文字和图片的示例代码
短信预约 -IT技能 免费直播动态提醒
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#实现自定义打印文字和图片的示例代码的文章就介绍到这了,更多相关C# 自定义打印文字和图片内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341