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 = "123" };//使用上面生成二维码的方法获取二维码的bitmap对象Bitmap bitmap = ZxingHelper.CreateQRCode("霸道");//重新绘制二维码布局Image img = ZxingHelper.GetPrintPicture(bitmap, assetEntity,400,400);//设置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 = 120,//高度Height = 120};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 = 5;//新建字体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 = 15;int pointX = 5;//用指定的位置和大小初始化 System.Drawing.Rectangle 类的新实例。Rectangle destRect = new Rectangle(190, 10, image.Width, image.Height);//在指定位置并且按指定大小绘制指定的 System.Drawing.Image 的指定部分。//GraphicsUnit.Pixel: 指定给定的数据的度量值的单位。//DrawImage :在指定的位置并且按原始大小绘制指定的Image对象g.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);//height += 8;//用指定的位置和大小初始化 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实现自定义绘制二维码布局相关推荐
- Android中 自定义logo二维码绘制(仿微信QQ二维码)
自定义Logo二维码绘制(追加上一篇简单二维码绘制) 1.实现思路 2.实现(新增拍照以及相册上传logo以及分享和保存二维码) 简单绘制二维码地址: Android 实现简单绘制二维码(包含带LOG ...
- C# 利用ZXing.Net来生成条形码和二维码
本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...
- Java分别使用zxing及qrcode-plugin生成各种样式二维码
二维码 二维条形码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息. 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动 ...
- Java自定义生成二维码(兼容你所有的需求)
1.概述 作为Java开发人员,说到生成二维码就会想到zxing开源二维码图像处理库,不可否认的是zxing确实很强大,但是实际需求中会遇到各种各样的需求是zxing满足不了的,于是就有了想法自己扩展 ...
- SpringBoot+zxing+Vue实现前端请求后台二维码图片
场景 ZXing是一个开源的,用Java实现的多种格式的1D/2D条码图像处理库. github地址: https://github.com/zxing/zxing 若依微服务版手把手教你本地搭建环境 ...
- Zxing图片识别 从相册选二维码图片解析总结
Zxing图片识别 从相册选取二维码图片进行解析总结 在Zxing扫描识别和图片识别的解析对象是相同的 本文分三个步骤: 1 获取相册的照片 2 解析二维码图片 3 返回结果 1) 获取相册照片 go ...
- 条码软件如何自定义条码二维码的样式
在生活中我们见到最多的条码二维码基本上都是以方形的黑白效果显示,虽然可能不是很美观,但是这确实是标准的显示方式,不过在中琅条码软件中,却可以自定义条码二维码样式,让条码二维码在保证扫描效果的前提下更加 ...
- 开发一个基于ZXing库以及安卓Studio的二维码扫描小程序(二)
开发一个基于ZXing库以及安卓Studio的二维码扫描小程序(二) 下面我们做一个ZXing扫描二维码的例子,是通过安卓库的方式引用ZXing应用代码. 开发步骤 建立一个安卓工程(Project) ...
- 微信小程序生成自定义参数二维码
微信小程序生成自定义参数二维码 前言 实现 尾巴 前言 最近项目中要用到二维码分享功能,需要封装一些自定义的参数通过二维码分享.查看官方文档,发现系统提供了生成二维码的功能,但是细看才发现官方提供的接 ...
最新文章
- dotnet 从零开始写一个人工智能 网络模型
- 核心控制芯片选型建议书(中低端)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- python计算工资编程-Python实现扣除个人税后的工资计算器示例
- 零基础python数据分析自学_零基础的人,怎么自学数据分析?
- Delphi窗体部分属性
- CPU cache侧信道攻击
- 闪字在线制作php源码,闪光字图片制作 在线制作图片加闪光字
- c语言编程中的逗号与结果,C++编程中逗号运算符和条件运算符的使用方法讲解...
- 《指数基金投资指南》读书笔记
- 从项目管理角度如何保证质量
- 关于用ANSYS有限元仿真软件划分网格的一些体验
- 【程序设计】浅拷贝与深拷贝
- linux网络引流工具,gor 引流快速入门
- HCIE面试题之交换机和路由器收到未知表项数据包如何处理
- 帕萨特加载模式启用怎么解除_关闭帕萨特自动启停功能的方法
- Telnet实验验证(详解)
- 解决报错【internal/modules/cjs/loader.js:905 throw err;】
- Android毛玻璃效果的实现(本文系转载一种快速毛玻璃虚化效果实现)
- hive Sql列转行使用explode的注意事项-null值处理
热门文章
- java语言简单代码_java语言编程如何实现一个最简单程序?
- SpringMVC学习(三)——SpringMVC+Slf4j+Log4j+Logback日志集成实战分享
- java中使用base64加密解密16进制方法
- 快速排序法(思想及代码实现)
- android path 合并_Android合并音频文件
- 2层框架结构柱子间距_框架结构的特点有哪些?框架结构是什么?
- python的for语句是否只有一种写法_跟老齐学Python之for循环语句
- 江西理工大学c语言程序设计竞赛怎么备考,2015年江西理工大学C语言程序设计竞赛(高级组)...
- 包含数字和指定字符的正则表达式_Excel公式练习39: 求字符串中的数字组成的数能够被指定数整除的数的个数...
- 简单的留言板 php,php 简单留言板教程一