场景

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. 《统计学习方法》极简笔记P2:感知机数学推导

    感知机模型 输入空间是$\chi\subseteq\mathbb{R}^n$,输出空间是$y={+1,-1}$ 感知机定义为:$f(x)=sign(wx+b)$ 感知机学习策略 输入空间任一点$x_0 ...

  2. .NET World——gPRC概览

    什么是gRPC 官方的定义: gRPC is a modern open source high performance RPC framework that can run in any envir ...

  3. ngxin安装之yum安装

    nginx部署至yum安装 1. 配置nginx所需的YUM源 [root@nginx]# cat /etc/yum.repos.d/yum.repo [nginx-stable] name=ngin ...

  4. 详解python函数的参数

    详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...

  5. JS如何重写一个函数

    分享一些自己在开发上遇到的问题,比如我们页面上用了大量的打印语句,但是在某些时候,我们不想要了. 解决方案1 : 我们删除这里的代码,如果太多了,那工作量太大好累,想想都不想干 解决方案2 :我们将c ...

  6. HTML5 storage事件监听

    引用<h5移动web开发指南>上的话: “当同源页面的某个页面修改了localStorage,其余的同源页面只要注册了storage事件,就会触发” 所以,localStorage  st ...

  7. MACOS安装使用kafka

    安装(会自动依赖安装zookeeper) brew install kafka 启动zookeeper cd /usr/local/Cellar/kafka/2.1.1/bin/ ./zookeepe ...

  8. 安装yarn集群

    安装yarn集群 # mapreduce运行平台YARN mapreduce程序应该是在很多机器上并行启动,而且先执行map task,当众多的maptask都处理完自己的数据 后,还需要启动众多的r ...

  9. CentOS搭建php + nginx环境

    更新Centos的yum源 yum update 安装EPEL源和REMI源 yum install epel-release yum install http://rpms.remirepo.net ...

  10. Storm 系列(二)—— Storm 核心概念详解

    一.Storm核心概念 1.1 Topologies(拓扑) 一个完整的 Storm 流处理程序被称为 Storm topology(拓扑).它是一个是由 Spouts 和 Bolts 通过 Stre ...