Winform中使用zxing和Graphics实现自定义绘制二维码布局
场景
zxing.dll下载
https://download.csdn.net/download/badao_liumang_qizhi/11623214
效果
实现
根据上面文章中将简单的二维码生成后,现在要调整其布局。
拖拽一个按钮,双击进入其点击事件。
private void button6_Click(object sender, EventArgs e)
{
//二维码内容对象
AssetEntity assetEntity = new AssetEntity() { Name = "霸道",Gender = "男",Url = "" };
//使用上面生成二维码的方法获取二维码的bitmap对象
Bitmap bitmap = ZxingHelper.CreateQRCode("霸道");
//重新绘制二维码布局
Image img = ZxingHelper.GetPrintPicture(bitmap, assetEntity,,);
//设置pictureBox的图片源
this.pictureBox1.Image = img;
}
这里新建了一个工具类ZxingHelper,调用其CreateQRCode方法返回生成二维码的Bitmap格式,然后调用其
GetPrintPicture获取调整布局后的照片。
在此之前,先新建一个存储打印内容的实体类AssetEntity
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace NPOITest
{
class AssetEntity
{
private string name;
private string gender;
private string url; public string Name { get => name; set => name = value; }
public string Gender { get => gender; set => gender = value; }
public string Url { get => url; set => url = value; }
}
}
然后在工具类中
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZXing;
using ZXing.Common;
using ZXing.QrCode; namespace NPOITest
{
class ZxingHelper
{
public static Bitmap CreateQRCode(string asset)
{
EncodingOptions options = new QrCodeEncodingOptions
{
DisableECI = true,
//编码
CharacterSet = "UTF-8",
//宽度
Width = ,
//高度
Height =
};
BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;
return writer.Write(asset);
} public static Image GetPrintPicture(Bitmap image, AssetEntity asset, int picWidth, int picHeight)
{
//新建Bitmap对象 用于返回 使用传递的参数作为宽度和高度
Bitmap printPicture = new Bitmap(picWidth, picHeight);
//高度
int height = ;
//新建字体
Font font = new Font("黑体", 10f);
//Graphics :封装一个 GDI+ 绘图图面
//FromImage :从指定的 System.Drawing.Image 创建新的 System.Drawing.Graphics。
Graphics g = Graphics.FromImage(printPicture);
//Brush :定义用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象。
Brush brush = new SolidBrush(Color.Black);
//设置此 System.Drawing.Graphics 的呈现质量。
g.SmoothingMode = SmoothingMode.HighQuality;
//填加反锯齿代码效果
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; int interval = ;
int pointX = ;
//用指定的位置和大小初始化 System.Drawing.Rectangle 类的新实例。
Rectangle destRect = new Rectangle(, , image.Width, image.Height);
//在指定位置并且按指定大小绘制指定的 System.Drawing.Image 的指定部分。
//GraphicsUnit.Pixel: 指定给定的数据的度量值的单位。
//DrawImage :在指定的位置并且按原始大小绘制指定的Image对象
g.DrawImage(image, destRect, , , image.Width, image.Height, GraphicsUnit.Pixel);
//
height += ;
//用指定的位置和大小初始化 System.Drawing.RectangleF 类的新实例。
RectangleF layoutRectangle = new RectangleF(pointX, height, 260f, 85f);
//在指定矩形并且用指定的 System.Drawing.Brush 和 System.Drawing.Font 对象绘制指定的文本字符串
g.DrawString("姓名:" + asset.Name, font, brush, layoutRectangle); height += interval;
layoutRectangle = new RectangleF(pointX, height, 230f, 85f);
g.DrawString("性别:" + asset.Gender, font, brush, layoutRectangle); height += interval;
layoutRectangle = new RectangleF(pointX, height, 230f, 85f);
g.DrawString("链接:" + asset.Url, font, brush, layoutRectangle); return printPicture;
}
}
}
Winform中使用zxing和Graphics实现自定义绘制二维码布局的更多相关文章
- C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码
最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...
- PHP自定义生成二维码跳转地址
比较简单的一款PHP自定义生成二维码跳转地址,手机端微信扫码,自动跳转到定义好的链接.支持自定义生成二维码尺寸.间距等. 鼠标悬浮显示二维码弹出层,离开后消失.js实现,代码如下: $(fu ...
- vue2.0 自定义 生成二维码(QRCode)组件
1.自定义 生成二维码组件 QRCode.vue <!-- 生成二维码 组件 --> <template> <canvas class="qrcode-canv ...
- 随手记一次利用开源zxing生成带嵌入logo的二维码图片
之前就在项目里面用过zxing生成二维码,最近另一个项目同样需要用到二维码,故重新在学了学利用zxing生成二维码 接下来先做准备工作了,因为我是用vs2013上开发的,故选择了.net4.5版本的z ...
- C# 利用ZXing.Net来生成条形码和二维码
本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...
- .NET使用ZXing.NET生成中间带图片的二维码
很久之前就有写这样的代码了,只是一直没记录下来,偶然想写成博客. 把之前的代码封装成函数,以方便理解以及调用. 基于开源的 ZXing.NET 组件,代码如下: 先添加对ZXing.NET的引用,然后 ...
- Android二维码开源项目zxing用例简化和生成二维码、条形码
上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...
- C#+ZXing.dll生成手机路径导航二维码
1.原谅我先写点废话哈 这两天用C#写一个C端的软件,甲方提出一个很无理的需求(在C端的程序中实现路径导航,关键是这个程序最终是运行在物理隔绝的电脑上的……),头疼了好几天,领导突然想到可以把坐标+百 ...
- 免费生成二维码接口,可直接嵌入到web项目中,附带嵌入方法,任意颜色二维码,任意大小二维码!
在线体验连接:http://www.zhaimaojun.top/qrcode/ 你是否在项目中寻找方便而且免费的可以直接嵌入到项目中的二维码生成工具呢?你找到了这里,说明你已经找到了!不要犹豫直接拿 ...
随机推荐
- maven的不同版本下载及环境配置
Maven不同版本下载及环境配置 Maven下载 去到官网 https://maven.apache.org/ 会发现是最新版本,但是一般下载的话,都会下载比最新的版本要低两到三个小版本的,这里就下载 ...
- DNS主、从域名服务器配置
#命令为红色 #vi编辑内容为蓝色 建立主.从或者缓存域名服务器,前提一定要关闭防火墙和linux防护机制,否则不能成功解析客户机请求 永久关闭防火墙和安全机制命令如下: systemctl stop ...
- 集成 Spring Boot 常用组件的后台快速开发框架 spring-boot-plus 国
spring-boot-plus是一套集成spring boot常用开发组件的后台快速开发框架 Purpose 每个人都可以独立.快速.高效地开发项目! Everyone can develop pr ...
- 高并发下,调整IIS相关的设置,以提高服务器并发量
1.修改 IIS 队列长度 参考资料:https://docs.microsoft.com/zh-cn/previous-versions/office/communications-server/d ...
- HBase 系列(十一)—— Spring/Spring Boot + Mybatis + Phoenix 整合
一.前言 使用 Spring+Mybatis 操作 Phoenix 和操作其他的关系型数据库(如 Mysql,Oracle)在配置上是基本相同的,下面会分别给出 Spring/Spring Boot ...
- C++中轻量级多线程openmp
关于其概念及使用方法: https://baike.baidu.com/item/openmp/3735430?fr=aladdin
- java两个对象属性比较
两个对象进行比较相等,有两种做法: 1,情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可.这里就不用说明 2.情况二:当除了情况一之外,还需知道是那个属性不同,那么就需要采用 ...
- 更新!ArcMap和ArcGIS Pro加载百度影像地图
上一篇文章写了ArcMap和ArcGIS Pro中加载百度地图 的方法 一次没有把百度影像加载的功能开发出来,趁这几天有空整理了下 加载方法按照上次那篇文章操作. 百度影像wmts加载地址:http: ...
- 智能家居系列之——WIFI小车
2017年准备搬新家了,一直关注着树莓派的论坛,看有没有新玩意,想着今年过年在杭州过年,头一次在城里过年,感觉特别无聊,没有麻将可以打,没有鞭炮可以放,只能在家做做小玩意.从小就对四驱车有兴趣,一直想 ...
- PythonI/O进阶学习笔记_1.抽象、面向对象、class/object/type
前言: 是自己在学习python进阶IO学习视频的时候的理解和笔记,因为很多都是本菜鸟学习时候的自己的理解,有可能理解有误. Content: - 抽象的概念和面向对象的概念?想要大概了解python ...