using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using ThoughtWorks.QRCode.Codec.Util;
namespace TwoDimensionCodePrint
{
public partial class Print : Form
{
private int left = 0, top = 0, width = 150, height = 150;
private string fileName = "d:\\二维码电子票\\红河谷大门票\\20141025111316红河谷大门票共30张.jpg";
public Print()
{
InitializeComponent();
}
//打印
private void btnPrint_Click(object sender, EventArgs e)
{
if (pictureBox1.Image == null)
{
MessageBox.Show("请选择二维码图片");
return;
}
//打印预览
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
PrintDocument printDocument = new PrintDocument();
//设置边距
try
{
left = int.Parse(txtLeft.Text);
top = int.Parse(txtTop.Text);
width = int.Parse(txtWidth.Text);
height = int.Parse(txtHeight.Text);
}
catch
{
MessageBox.Show("请输入正确的数字");
}
Margins margin = new Margins(left, left + width, top, top + height);
printDocument.DefaultPageSettings.Margins = margin;
//打印事件设置
printDocument.PrintPage += new PrintPageEventHandler(this.PrintPageEvent);
// 打印预览
//printPreviewDialog.Document = printDocument;
//printPreviewDialog.ShowDialog();
try
{
printDocument.Print();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
printDocument.PrintController.OnEndPrint(printDocument, new PrintEventArgs());
}
}
//打印事件处理
private void PrintPageEvent(object sender, PrintPageEventArgs e)
{
//读取图片
// 1 根据路径获取
// Bitmap image = new Bitmap(fileName);
// 2 从PictureBox获取
// Image image = pictureBox1.Image;
// 3 直接根据生成的二维码打印
Image image = ProduceQRcode("司吉峰");
//在指定区域打印二维码
Rectangle destRect = new Rectangle(left, top, width, height);
e.Graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, System.Drawing.GraphicsUnit.Pixel);
}
// 将结果填充到图片
private void GetResultIntoImage(ref Image temp, string name, string date)
{
//读取图片
Graphics g = Graphics.FromImage(temp);
Font f = new Font("宋体", 12);
Brush b = new SolidBrush(System.Drawing.Color.Black);
//填充数据到图片
g.DrawImage(temp, 0, 0, temp.Width, temp.Height);
g.DrawString(name, f, b, 168, 105);
g.DrawString(date, f, b, 176, 269);
g.Dispose();
}
//生成二维码
public Image ProduceQRcode(string TicketCodeContent)
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 7;
qrCodeEncoder.QRCodeVersion = 0;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
qrCodeEncoder.QRCodeBackgroundColor = System.Drawing.Color.White;
qrCodeEncoder.QRCodeForegroundColor = System.Drawing.Color.Black;
return qrCodeEncoder.Encode(TicketCodeContent);
}
}
}
运行界面:
完整代码下载:点击打开链接