標籤:二維碼 c#
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); } }}
運行介面:
完整代碼下載:點擊開啟連結
[c#]二維碼列印