c#二维码生成实例并插入logo图片
二维码生成实例
这是一个简单的二维码生成实例,我们就用c#的windows程序来写吧。
1.新建一个windows程序,然后引用ThoughtWorks.QRCode.dll。这个dll没有可以到网上去copy一个下来。
首先画好这样一个界面,界面非常简单,但是太丑一点,我们做好了再放一个皮肤上去。
接下来我们开始写后台代码吧!
using System;
using System.Collections.Generic;
using https://www.360docs.net/doc/3b17621171.html,ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ThoughtWorks.QRCode.Codec;
using System.IO;
using System.Drawing.Imaging;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private object logoImg;//用于存放logo图片
private void Form1_Load(object sender, EventArgs e)
{
this.skinEngine1.SkinFile = "Calmness.ssk";
}
///
///获取二维码生成图片
///
///
public Bitmap getcode(string writeStr)
{
QRCodeEncoder qRCodeEncoder = new QRCodeEncoder();
qRCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//设置二维码编码格式
qRCodeEncoder.QRCodeScale = 4;//设置编码测量度
qRCodeEncoder.QRCodeVersion = 7;//设置编码版本
qRCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//设置错误校验
Bitmap image = qRCodeEncoder.Encode(writeStr); ;
return image;
}
///
///获取logo
///
///
public Bitmap getlogo()
{
Bitmap newBmp = new Bitmap("logo.jpg");//获取图片对象
Bitmap bmp = new Bitmap(newBmp, 30, 30);//缩放
return bmp;
}
///
///二维码保存
///
///
///
private void Save_Btn_Click(object sender, EventArgs e)
{
SaveFileDialog saveFile = new SaveFileDialog();//创建保存对话框
saveFile.Filter = "JPEG|*.jpeg;*.jpg|位图文件|*.bmp|所有文件|*.*";//设置保存的图片格式
if (pictureBox1.Image != null)
{
if (saveFile.ShowDialog() == DialogResult.OK)
{
string sFilePathName = saveFile.FileName;
Image img = pictureBox1.Image;
img.Save(sFilePathName);
}
}
else
{
MessageBox.Show("请先生成二维码!");
}
}
///
///二维码生成
///
///
///
private void ShengCheng_Btn_Click(object sender, EventArgs e)
{
if (Str_Tbx.Text.Trim() != "") //验证输入的生成内容是否为空
{
Bitmap bCode = getcode(Str_Tbx.Text); //获取二维码图片
if (logoImg == null)
{
pictureBox1.Image = bCode;
}
else
{
Bitmap bLogo = logoImg as Bitmap; //获取logo图片对象
bLogo = new Bitmap(bLogo, 30, 30); //改变图片的大小这里我们设置为30
int Y = bCode.Height;
int X = bCode.Width;
Point point = new Point(X / 2 - 15, Y / 2 - 15);//logo图片绘制到二维码上,这里将简单计算一下logo所在的坐标
Graphics g = Graphics.FromImage(bCode);//创建一个画布
g.DrawImage(bLogo, point);//将logo图片绘制到二维码图片上
pictureBox1.Image = bCode;
}
}
else
{
MessageBox.Show("输入生成内容!");
}
}
///
/// logo上传
///
///
///
private void UpLogo_Btn_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();//文件打开对话框
openFileDialog.Filter = "JPEG|*.jpeg;*.jpg|位图文件|*.bmp|所有文件|*.*";//只能打开我们设置的这几类文件
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string fileName = openFileDialog.FileName;
Bitmap newBmp = new Bitmap(fileName);
Bitmap bmp = new Bitmap(newBmp);
pictureBox1.Image = bmp;
logoImg = bmp;
}
}
}
}
皮肤在这儿就不再多做介绍了,接下来我们来看看成果吧。