场景

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实现自定义绘制二维码布局的更多相关文章

  1. C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码

    最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...

  2. PHP自定义生成二维码跳转地址

      比较简单的一款PHP自定义生成二维码跳转地址,手机端微信扫码,自动跳转到定义好的链接.支持自定义生成二维码尺寸.间距等.    鼠标悬浮显示二维码弹出层,离开后消失.js实现,代码如下: $(fu ...

  3. vue2.0 自定义 生成二维码(QRCode)组件

    1.自定义 生成二维码组件 QRCode.vue <!-- 生成二维码 组件 --> <template> <canvas class="qrcode-canv ...

  4. 随手记一次利用开源zxing生成带嵌入logo的二维码图片

    之前就在项目里面用过zxing生成二维码,最近另一个项目同样需要用到二维码,故重新在学了学利用zxing生成二维码 接下来先做准备工作了,因为我是用vs2013上开发的,故选择了.net4.5版本的z ...

  5. C# 利用ZXing.Net来生成条形码和二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  6. .NET使用ZXing.NET生成中间带图片的二维码

    很久之前就有写这样的代码了,只是一直没记录下来,偶然想写成博客. 把之前的代码封装成函数,以方便理解以及调用. 基于开源的 ZXing.NET 组件,代码如下: 先添加对ZXing.NET的引用,然后 ...

  7. Android二维码开源项目zxing用例简化和生成二维码、条形码

    上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...

  8. C#+ZXing.dll生成手机路径导航二维码

    1.原谅我先写点废话哈 这两天用C#写一个C端的软件,甲方提出一个很无理的需求(在C端的程序中实现路径导航,关键是这个程序最终是运行在物理隔绝的电脑上的……),头疼了好几天,领导突然想到可以把坐标+百 ...

  9. 免费生成二维码接口,可直接嵌入到web项目中,附带嵌入方法,任意颜色二维码,任意大小二维码!

    在线体验连接:http://www.zhaimaojun.top/qrcode/ 你是否在项目中寻找方便而且免费的可以直接嵌入到项目中的二维码生成工具呢?你找到了这里,说明你已经找到了!不要犹豫直接拿 ...

随机推荐

  1. 关于JSP页面的静态包含和动态包含

    JSP中有两种包含:静态包含:<%@include file="被包含页面"%> 和 动态包含:<jsp:include page="被包含页面&quo ...

  2. k8s学习笔记

    9.deployment:声明式的升级应用 9.1.使用RC实现滚动升级 #kubectl rolling-update kubia-v1 kubia-v2 --image=luksa/kubia:v ...

  3. c# oracle 数据库连接以及参数化查询

    private string OracleSearchDemo(string cadqueueId) { string address = null; using (OracleConnection ...

  4. 以帧为存储单位的循环stack

    此stack主要是作为存储空间使用,主要的借口就是push和pop. stack frame的src以及例程位于stack_FrameTest这个库当中,其中有readme文件,可以快速上手. sta ...

  5. mybatis对象的插入

    或者: 传入JAVA对象 mapper接口代码: public int findUserList(User user); xml代码: <select id="findUserList ...

  6. hibernate.validator 与 jackson

    1.使用hibernate.validator校验非空,在FormData类中 name字段上面加@NotEmpty @NotEmpty(message = "姓名必填") pri ...

  7. Oracle数据库之四 简单查询

    四.简单查询 ​ 简单查询的主要特征就是将一张数据表之中的全部数据行进行显示,而后可以利用 SELECT 子句来控制所需要的输出列. 4.1.基础语法 范例:查询 emp 表中的数据(全部数据查询) ...

  8. Ribbon实现客户端负载均衡

    什么是Ribbon? 客户端负载均衡组件. 前期准备: 搭建一个Eureka集群和一个注册服务 https://www.cnblogs.com/noneplus/p/11374883.html 创建服 ...

  9. Ion内存的带cahce与不带cache问题分享

    一次开发中,遇到一个问题:YUV图像(由本地磁盘文件读到ION内存中)缩放时,对于缩放模块的输入源来说,使用带cache的方式要比不带cache的方式速度快数10倍. 为什么会出现这个情况呢? 在解释 ...

  10. .NET Core 学习资料精选:进阶

    .NET 3.0 这个月就要正式发布了,对于前一篇博文<.NET Core 学习资料精选:入门>大家学的可还开心?这是本系列的第二篇文章:进阶篇,喜欢的园友速度学起来啊. 对于还在使用传统 ...