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 生成解析二维码的更多相关文章

  1. Java使用ZXing生成/解析二维码图片

    ZXing是一种开源的多格式1D/2D条形码图像处理库,在Java中的实现.重点是在手机上使用内置摄像头来扫描和解码设备上的条码,而不与服务器通信.然而,该项目也可以用于对桌面和服务器上的条形码进行编 ...

  2. 使用zxing生成解析二维码

    1. 前言 随着移动互联网的发展,我们经常在火车票.汽车票.快餐店.电影院.团购网站以及移动支付等各个场景下见到二维码的应用,可见二维码以经渗透到人们生活的各个方面.条码.二维码以及RFID被人们应用 ...

  3. java生成/解析二维码

    package a; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import ...

  4. APS.NET MVC4生成解析二维码简单Demo

    一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewpor ...

  5. JAVA生成解析二维码

    package com.mohe.twocode; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.B ...

  6. 安卓开发中使用ZXing生成解析二维码

    编码示例 package com.wolf_pan.qrcodesample; import android.graphics.Bitmap; import android.graphics.Colo ...

  7. asp.net C#生成和解析二维码代码

    类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec;using Thought ...

  8. Java生成与解析二维码

    1.下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar, 其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免 ...

  9. java 生成和解析二维码

    public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoder ...

随机推荐

  1. SpringBoot中通过SpringBootServletInitializer如何实现容器初始化

    相关文章 <Servlet3.0之四:动态注册和Servlet容器初始化> <SpringBoot中通过SpringBootServletInitializer如何实现组件加载> ...

  2. Java-API-Package:java.net百科

    ylbtech-Java-API-Package:java.net百科 并非所有系统都支持 IPv6 协议,而当 Java 网络连接堆栈尝试检测它并在可用时透明地使用它时,还可以利用系统属性禁用它.在 ...

  3. 表空间 -- tablespace

    表空间是数据库的逻辑划分,一个表空间只能属于一个数据库.所有的数据库对象都存放在指定的表空间中.但主要存放的是表, 所以称作表空间. Oracle数据库中至少存在一个表空间,即SYSTEM的表空间. ...

  4. 配置ElasticSearch快捷启动

    在/etc/init.d目录下新建文件elasticsearch #!/bin/sh #chkconfig: 2345 80 05 #description: es #export JAVA_HOME ...

  5. 转: SQL中的where条件,在数据库中提取与应用浅析

    SQL中的where条件,在数据库中提取与应用浅析 http://hedengcheng.com/?p=577 1问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当 ...

  6. 张瀚荣:如何用UE4制作3D动作游戏

    转自:http://www.gamelook.com.cn/2015/06/218267 GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次 ...

  7. Python多线程-生产者消费者模型

    用多线程和队列来实现生产者消费者模型 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import threading imp ...

  8. 大杀器TheFatRat

    项目地址:https://github.com/Screetsec/TheFatRat 安装TheFatRat root@sch01ar:/sch01ar# git clone https://git ...

  9. leetcode804

    int uniqueMorseRepresentations(vector<string>& words) { map<char, string> st; st.ins ...

  10. [原创]JMeter初次使用总结

    引言 最近开发 java 后端项目,对外提供Restful API接口,完整功能开发现已完成. 目前通过单测(68%行覆盖率)已保证业务逻辑正确性,同时也尝试使用JMeter进行压力测试以保证并发性能 ...