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 ...
随机推荐
- 【转】在Linux下使用Jmeter执行测试任务
想在Linux下运行jmeter必须先安装jdk,安装步骤如下: (1).下载一个linux可用的jdk包(比如:jdk-6u45-linux-i586.bin), (2).然后将jdk-6u45-l ...
- python开发面向对象基础:组合&继承
一,组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合 人类装备了武器类就是组合 1.圆环,将圆类实例后传给圆环类 #!/usr/bin/env python #_*_ ...
- nandflash裸机程序分析
它包含7个文件: head.S init.c main.c Makefile nand.c nand.lds 我们之前的程序都是在nandflash的前4k放代码,上电后自动拷贝到SRAM中,之后将S ...
- call()和apply()的认知
apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 arg ...
- C#编程技巧
拷贝/克隆(深度/浅拷贝).序列化.反射 Json/Xml 窗体的单例模式 https://www.cnblogs.com/imstrive/p/5426503.html 使用XmlSerialize ...
- 相关不同Linux系统的性能监控命令整理
Linux系统 查看系统版本情况: $uname -a 监控进程的CPU,MEM使用情况: $ps –aux 过滤方式命令:$ ps -aux|awk '{print $3,$4,$11}'|sort ...
- 关于解决DevExpress用DevExpress patch工具破解后经常弹出试用框的问题
方法有效自己试过很棒!!!!!!!! 第一:破解工具:DevExpressComponents-14.1.4和破解工具 第二:解决DevExpress用DevExpress patch工具破解后经常弹 ...
- 「小程序JAVA实战」 小程序私有页面的生命周期以及导航(10)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-10/ 之前讲了小程序全局的生命周期,今天咱们说说单个页面的生命周期!源码:https://gith ...
- 【知识结构】最强Web认证知识体系
花了些时间总结了下Web认证,以及各种方式的利弊和使用,后续后继续更新.文章转载请注明出处:https://www.cnblogs.com/pengdai/p/9144843.html -----20 ...
- Redis搭建(五):Cluster集群搭建
一.方案 1. 介绍 redis3.0及以上版本实现,集群中至少应该有奇数个节点,所以至少有三个节点,官方推荐三主三从的配置方式 使用哈希槽的概念,Redis 集群有16384个哈希槽,每个key通过 ...