C# PDF、winform 生成解析二维码
PDF 生成、解析二维码
界面样式:

第一步:下载ThoughtWorks.QRCode.dll 类并引用
地址 http://download.csdn.net/detail/liwb1987/8500113
第二步:设置控件到界面上
第三部:生成按钮下代码
private void btnCreateQRCodeClick(object sender, RoutedEventArgs e)
{
try
{
ShowQRCode();
}
catch (Exception ex)
{
MessageBox.Show("生成二维码出错!", "系统提示");
return;
}
}
ShowQRCode(); 在这个方法里面有调用了三个方法都有返回值
/// <summary>
/// 显示生成的二维码
/// </summary>
public void ShowQRCode()
{
if (txtQRCodeContent.Text.Trim().Length <= )
{
MessageBox.Show("二维码内容不能为空,请输入内容!", "系统提示");
txtQRCodeContent.Focus();
return;
}
bimg = CreateQRCode(txtQRCodeContent.Text);
imgQRcode.Source = BitmapToBitmapImage(bimg);
ResetImageStrethch(imgQRcode, bimg);
}
(1)CreateQRCode 将文本转换成为 Bitmap 格式
public Bitmap CreateQRCode(string content)
{
QRCodeEncoder qrEncoder = new QRCodeEncoder();
qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrEncoder.QRCodeScale = Convert.ToInt32(txtSize.Text);
qrEncoder.QRCodeVersion = Convert.ToInt32(cboVersion.SelectedValue);
qrEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
try
{
Bitmap qrcode = qrEncoder.Encode(content, Encoding.UTF8);
if (!logoImagepath.Equals(string.Empty))
{
Graphics g = Graphics.FromImage(qrcode);
Bitmap bitmapLogo = new Bitmap(logoImagepath);
int logoSize = Convert.ToInt32(txtLogoSize.Text);
bitmapLogo = new Bitmap(bitmapLogo, new System.Drawing.Size(logoSize, logoSize));
PointF point = new PointF(qrcode.Width / - logoSize / , qrcode.Height / - logoSize / );
g.DrawImage(bitmapLogo, point);
}
return qrcode;
}
catch (IndexOutOfRangeException ex)
{
MessageBox.Show("超出当前二维码版本的容量上限,请选择更高的二维码版本!", "系统提示");
return new Bitmap(, );
}
catch (Exception ex)
{
MessageBox.Show("生成二维码出错!", "系统提示");
return new Bitmap(, );
}
}
BitmapToBitmapImage 再次转换成image 格式 显示在界面上
public BitmapImage BitmapToBitmapImage(Bitmap bitmap)
{
BitmapImage bImage = new BitmapImage();
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
bImage.BeginInit();
bImage.StreamSource = new MemoryStream(ms.ToArray());
bImage.EndInit();
return bImage;
}
ResetImageStrethch(填充附加图片)
private void ResetImageStrethch(System.Windows.Controls.Image img, Bitmap bImg)
{
if (bImg.Width <= img.Width)
{
img.Stretch = Stretch.None;
}
else
{
img.Stretch = Stretch.Fill;
}
}
添加Logo 添加按钮
/// <summary>
/// 添加Logo按钮处理事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAddLogoClick(object sender, RoutedEventArgs e)
{
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Filter = "图片文件|*.jpg;*.png;*.gif|All files(*.*)|*.*";
if (openDialog.ShowDialog() == true)
{
logoImagepath = openDialog.FileName;
Bitmap bImg = new Bitmap(logoImagepath);
imgLogo.Source = new BitmapImage(new Uri(openDialog.FileName));
ResetImageStrethch(imgLogo, bImg);
}
}
第三步 解析二维码
解析按钮下代码
private void DecodeQRCodeClick(object sender, RoutedEventArgs e)
{
try
{
tbDecodeResult.Text = "";
DecodeQRCode();
}
catch (Exception ex)
{
MessageBox.Show("解析二维码出错!", "系统提示");
return;
}
}
DecodeQRCode()方法
/// <summary>
/// 解析二维码
/// </summary>
public void DecodeQRCode()
{
if (bimg == null)
{
MessageBox.Show("请先打开一张二维码图片!", "系统提示");
return;
}
QRCodeDecoder qrDecoder = new QRCodeDecoder();
QRCodeImage qrImage = new QRCodeBitmapImage(bimg);
tbDecodeResult.Text = qrDecoder.decode(qrImage, Encoding.UTF8);
}
将解析的内容显示在界面上
第四步
打开二维码按钮
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Filter = "图片文件|*.jpg;*.png;*.gif|All files(*.*)|*.*";
if (openDialog.ShowDialog() == true)
{
bimg = new Bitmap(openDialog.FileName);
imgQRcode.Source = new BitmapImage(new Uri(openDialog.FileName));
ResetImageStrethch(imgQRcode, bimg);
}
保存按钮
private void btnSaveClick(object sender, RoutedEventArgs e)
{
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.Filter = "Png文件(*.Png)|*.png|All files(*.*)|*.*";
if (saveDialog.ShowDialog() == true)
{
try
{
SaveQRCode(saveDialog.FileName);
MessageBox.Show("保存成功!", "系统提示");
}
catch (Exception ex)
{
MessageBox.Show("保存二维码出错!", "系统提示");
return;
}
}
}
C# winform生成二维码
界面样式
C# PDF、winform 生成解析二维码的更多相关文章
- Java使用ZXing生成/解析二维码图片
ZXing是一种开源的多格式1D/2D条形码图像处理库,在Java中的实现.重点是在手机上使用内置摄像头来扫描和解码设备上的条码,而不与服务器通信.然而,该项目也可以用于对桌面和服务器上的条形码进行编 ...
- 使用zxing生成解析二维码
1. 前言 随着移动互联网的发展,我们经常在火车票.汽车票.快餐店.电影院.团购网站以及移动支付等各个场景下见到二维码的应用,可见二维码以经渗透到人们生活的各个方面.条码.二维码以及RFID被人们应用 ...
- java生成/解析二维码
package a; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import ...
- APS.NET MVC4生成解析二维码简单Demo
一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewpor ...
- JAVA生成解析二维码
package com.mohe.twocode; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.B ...
- 安卓开发中使用ZXing生成解析二维码
编码示例 package com.wolf_pan.qrcodesample; import android.graphics.Bitmap; import android.graphics.Colo ...
- asp.net C#生成和解析二维码代码
类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec;using Thought ...
- Java生成与解析二维码
1.下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar, 其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免 ...
- java 生成和解析二维码
public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoder ...
随机推荐
- Vue.js:路由
ylbtech-Vue.js:路由 1.返回顶部 1. Vue.js 路由 本章节我们将为大家介绍 Vue.js 路由. Vue.js 路由允许我们通过不同的 URL 访问不同的内容. 通过 Vue. ...
- Dynamics CRM 2011 通过工作流发邮件时的权限问题
场景: 在CRM中配置工作流,完成某个步骤后,发送邮件通知其他用户.发件人统一配置为管理员,收件人则根据业务需要设定动态值. 相关权限配置 首先启动流程的用户, 需要允许其他用户代表发送电子邮件 另外 ...
- gcc及其选项详解
1.简介: gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的.这个东西功能强大,但是有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到.但是不管装软件还是写程序 ...
- 基于LVS的负载均衡实现
一 什么是负载均衡 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务 ...
- 子域名扫描器 - aquatone
项目地址:https://github.com/michenriksen/aquatone git clone,然后打开 ┌─[root@sch01ar]─[/sch01ar] └──╼ #git c ...
- js发送windows提示信息
js发送windows提示信息 效果图 代码 Notification.requestPermission(function() { if(Notification.permission === 'g ...
- freemodbus modbus TCP 学习笔记
1.前言 使用modbus有些时间了,期间使用过modbus RTU也使用过modbus TCP,通过博文和大家分享一些MODBUS TCP的东西.在嵌入式中实现TCP就需要借助一个以太网协议 ...
- 「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-08/ 小程序如何加载的呢?生命周期!源码:https://github.com/limingios ...
- Mycat实战之数据迁移(oracle -- mysql)
1.案例场景: Mycat 后面接一个 Oracle 实例与一个 MySQL 实例,假设用户表,订单表,转账记录表, Oracle 字符集为 GBK 的,MySQL 字符集则要求 UTF8的 完成用户 ...
- $().each和$.each()
$().each 在dom处理上面用的较多.如果页面有多个input标签类型为checkbox,对于这时用$().each来处理多个checkbook,例如: $(“input[name=’ch’]” ...