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 ...
随机推荐
- Oray.com花生壳路由器配置注意
当路由器不链接wan口,只链接lan口时,此路由器其实就是当做一个无线交换机使用了,在此种情况下,花生壳登录会失败,因为花生壳本身也认为这设备不是路由器.
- Python类(二)-类的继承
单继承 #-*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" class People: def __init__(self,name ...
- java成神之——集合框架之队列,栈,集合并发
集合 队列和双端队列 PriorityQueue Deque BlockingQueue Queue 栈 集合并发 线程锁 线程安全集合 结语 集合 队列和双端队列 PriorityQueue 此队列 ...
- 解决webpack环境变量NODE_ENV跨平台兼容性问题
为什么要用cross-env插件 学过webpack的人都知道,webpack可以使用NODE_ENV=development或者NODE_ENV=production这样的方式来设置全局变量 这样的 ...
- 「小程序JAVA实战」 小程序手写属于自己的第一个demo(六)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-06/ 自己尝试的写一个小demo,用到自定义样式,自定义底部导航,页面之间的跳转等小功能.官方文档 ...
- idea将项目导出为war包
idea 那么好用,早就把eclipse抛弃了.不过每次都是在给项目发包的时候,不得不重新打开eclipse导出为war包.感觉自己蠢蠢的.上网查了一下教程,按照网上的教程设置好了之后,运行项目发现并 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 8_Neural Networks Representation 神经网络的表述
神经网络是一种受大脑工作原理启发的模式. 它在许多应用中广泛使用:当您的手机解释并理解您的语音命令时,很可能是神经网络正在帮助理解您的语音; 当您兑现支票时,自动读取数字的机器也使用神经网络. 8.1 ...
- C语言之随机数和字符串输入输出
一.随机数产生函数 1.需要加入头文件 #include<stdlib.h> 和 #include<time.h> 2.Rand是伪随机数产生器,每次调用rand产生的随机数是 ...
- java基础之Socket编程概述以及简单案例
概述: 用来实现网络互连的 不同的计算机上 运行的程序间 可以进行数据交互 也就是用来在不同的电脑间, 进行数据传输. 三大要素: IP地址: 设备(电脑,手机,ipad)在网络中的唯一标识. 组成 ...
- mfs教程(一)
对于mfs文件系统也用了半年了,确实不错,最近又翻译了作者的三篇文章,再此一同发上,希望对大家有所帮助.不足之处还请指出,以便完善,谢谢! 感谢网友nonamexz做了精美的pdf文档 MFS文件系统 ...