C#绘制条码CODE39和CODE39全码模式

C# vb .NET读取识别条形码线性条码code39 code39是比较常见的条形码编码规则类型的一种。如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效、准确的条形码,线性条码,QR二维码的读取和生成类库。接口调用简单,文档齐全。 初识SharpBarcode 您可以点击下面的链接了解更多信息: 1、SharpBarcode简介 2、一张图看懂SharpB... 阅读详情

不使用字体来绘制CODE39码

效果图

使用

  1.   MyImage.BandCode.Code39 _Code39 =  new  MyImage.BandCode.Code39();
  2.             _Code39.Height = 120;
  3.             _Code39.Magnify = 1;
  4.             _Code39.ViewFont =  new  Font( "宋体" , 20);
  5.             pictureBox1.Image = _Code39.GetCodeImage( "123ABC4567890" , MyImage.BandCode.Code39.Code39Model.Code39Normal,  true );
  6.             pictureBox1.Image.Save(@ "C:/1.bmp" );

 

 

全部代码

  1. using  System;
  2. using  System.Collections;
  3. using  System.ComponentModel;
  4. using  System.Drawing;
  5. using  System.Data;
  6. namespace  MyImage.BandCode
  7. {
  8.      /// <summary>
  9.      /// Code39编码
  10.      /// zgke@sina.com
  11.      /// qq:116149
  12.      /// </summary>
  13.      public   class  Code39
  14.     {
  15.          private  Hashtable m_Code39 =  new  Hashtable();
  16.          private   byte  m_Magnify = 0;
  17.          /// <summary>
  18.          /// 放大倍数
  19.          /// </summary>
  20.          public   byte  Magnify {  get  { return  m_Magnify; } set {m_Magnify=value;} }
  21.         
  22.          private   int  m_Height = 40;
  23.          /// <summary>
  24.          /// 图形高
  25.          /// </summary>
  26.          public   int  Height {  get  {  return  m_Height; }  set  { m_Height = value; } }
  27.         
  28.          private  Font m_ViewFont =  null ;
  29.          /// <summary>
  30.          /// 字体大小
  31.          /// </summary>
  32.          public  Font ViewFont {  get  {  return  m_ViewFont; }  set  { m_ViewFont = value; } }
  33.         
  34.          public  Code39()
  35.         {
  36.            
  37.             m_Code39.Add( "A" ,  "1101010010110" );
  38.             m_Code39.Add( "B" ,  "1011010010110" );
  39.             m_Code39.Add( "C" ,  "1101101001010" );
  40.             m_Code39.Add( "D" ,  "1010110010110" );
  41.             m_Code39.Add( "E" ,  "1101011001010" );
  42.             m_Code39.Add( "F" ,  "1011011001010" );
  43.             m_Code39.Add( "G" ,  "1010100110110" );
  44.             m_Code39.Add( "H" ,  "1101010011010" );
  45.             m_Code39.Add( "I" ,  "1011010011010" );
  46.             m_Code39.Add( "J" ,  "1010110011010" );
  47.             m_Code39.Add( "K" ,  "1101010100110" );
  48.             m_Code39.Add( "L" ,  "1011010100110" );
  49.             m_Code39.Add( "M" ,  "1101101010010" );
  50.             m_Code39.Add( "N" ,  "1010110100110" );
  51.             m_Code39.Add( "O" ,  "1101011010010" );
  52.             m_Code39.Add( "P" ,  "1011011010010" );
  53.             m_Code39.Add( "Q" ,  "1010101100110" );
  54.             m_Code39.Add( "R" ,  "1101010110010" );
  55.             m_Code39.Add( "S" ,  "1011010110010" );
  56.             m_Code39.Add( "T" ,  "1010110110010" );
  57.             m_Code39.Add( "U" ,  "1100101010110" );
  58.             m_Code39.Add( "V" ,  "1001101010110" );
  59.             m_Code39.Add( "W" ,  "1100110101010" );
  60.             m_Code39.Add( "X" ,  "1001011010110" );
  61.             m_Code39.Add( "Y" ,  "1100101101010" );
  62.             m_Code39.Add( "Z" ,  "1001101101010" );
  63.             m_Code39.Add( "0" ,  "1010011011010" );
  64.             m_Code39.Add( "1" ,  "1101001010110" );
  65.             m_Code39.Add( "2" ,  "1011001010110" );
  66.             m_Code39.Add( "3" ,  "1101100101010" );
  67.             m_Code39.Add( "4" ,  "1010011010110" );
  68.             m_Code39.Add( "5" ,  "1101001101010" );
  69.             m_Code39.Add( "6" ,  "1011001101010" );
  70.             m_Code39.Add( "7" ,  "1010010110110" );
  71.             m_Code39.Add( "8" ,  "1101001011010" );
  72.             m_Code39.Add( "9" ,  "1011001011010" );
  73.             m_Code39.Add( "+" ,  "1001010010010" );
  74.             m_Code39.Add( "-" ,  "1001010110110" );
  75.             m_Code39.Add( "*" ,  "1001011011010" );
  76.             m_Code39.Add( "/" ,  "1001001010010" );
  77.             m_Code39.Add( "%" ,  "1010010010010" );
  78.             m_Code39.Add( "$" ,  "1001001001010" );
  79.             m_Code39.Add( "." ,  "1100101011010" );
  80.             m_Code39.Add( " " ,  "1001101011010" );
  81.         }
  82.         
  83.          public   enum  Code39Model
  84.         {
  85.              /// <summary>
  86.              /// 基本类别 1234567890ABC
  87.              /// </summary>
  88.             Code39Normal,
  89.              /// <summary>
  90.              /// 全ASCII方式 +A+B 来表示小写
  91.              /// </summary>
  92.             Code39FullAscII
  93.         }
  94.          /// <summary>
  95.          /// 获得条码图形
  96.          /// </summary>
  97.          /// <param name="p_Text">文字信息</param>
  98.          /// <param name="p_Model">类别</param>
  99.          /// <param name="p_StarChar">是否增加前后*号</param>
  100.          /// <returns>图形</returns>
  101.          public  Bitmap GetCodeImage( string  p_Text, Code39Model p_Model,  bool  p_StarChar)
  102.         {
  103.              string  _ValueText =  "" ;
  104.              string  _CodeText =  "" ;
  105.              char [] _ValueChar =  null ;
  106.              switch  (p_Model)
  107.             {
  108.                  case  Code39Model.Code39Normal:
  109.                     _ValueText = p_Text.ToUpper();
  110.                      break ;
  111.                  default :
  112.                     _ValueChar=p_Text.ToCharArray();
  113.                      for  ( int  i = 0; i != _ValueChar.Length; i++)
  114.                     {
  115.                          if  (( int )_ValueChar[i] >= 97 && ( int )_ValueChar[i] <= 122)
  116.                         {
  117.                             _ValueText += "+" + _ValueChar[i].ToString().ToUpper();
  118.                             
  119.                         }
  120.                          else
  121.                         {
  122.                             _ValueText += _ValueChar[i].ToString();
  123.                         }
  124.                     }
  125.                      break ;
  126.             }
  127.             _ValueChar = _ValueText.ToCharArray();
  128.              if  (p_StarChar ==  true ) _CodeText += m_Code39[ "*" ];
  129.              for  ( int  i = 0; i != _ValueChar.Length; i++)
  130.             {
  131.                  if  (p_StarChar== true  && _ValueChar[i] ==  '*' )  throw   new  Exception( "带有起始符号不能出现*" );
  132.                  object  _CharCode=m_Code39[_ValueChar[i].ToString()];
  133.                  if  (_CharCode ==  null )  throw   new  Exception( "不可用的字符"  + _ValueChar[i].ToString());
  134.                 _CodeText += _CharCode.ToString();
  135.             }
  136.              if  (p_StarChar ==  true ) _CodeText += m_Code39[ "*" ];
  137.           
  138.             Bitmap _CodeBmp = GetImage(_CodeText);
  139.             GetViewImage(_CodeBmp, p_Text);
  140.              return  _CodeBmp;
  141.         }
  142.         
  143.          /// <summary>
  144.          /// 绘制编码图形
  145.          /// </summary>
  146.          /// <param name="p_Text">编码</param>
  147.          /// <returns>图形</returns>
  148.          private  Bitmap GetImage( string  p_Text)
  149.         {
  150.              char [] _Value = p_Text.ToCharArray();
  151.             
  152.              //宽 == 需要绘制的数量*放大倍数 + 两个字的宽   
  153.             Bitmap _CodeImage =  new  Bitmap(_Value.Length * (( int )m_Magnify + 1) , ( int )m_Height);
  154.             Graphics _Garphics = Graphics.FromImage(_CodeImage);
  155.             _Garphics.FillRectangle(Brushes.White,  new  Rectangle(0, 0, _CodeImage.Width, _CodeImage.Height));
  156.           
  157.              int  _LenEx = 0;
  158.              for  ( int  i = 0; i != _Value.Length; i++)
  159.             {
  160.                  int  _DrawWidth = m_Magnify + 1;
  161.                  if  (_Value[i] ==  '1' )
  162.                 {
  163.                     _Garphics.FillRectangle(Brushes.Black,  new  Rectangle(_LenEx, 0, _DrawWidth, m_Height));
  164.                 }
  165.                  else
  166.                 {
  167.                     _Garphics.FillRectangle(Brushes.White,  new  Rectangle(_LenEx, 0, _DrawWidth, m_Height));
  168.                 }
  169.                 _LenEx += _DrawWidth;
  170.             }
  171.           
  172.             _Garphics.Dispose();
  173.              return  _CodeImage;
  174.         }
  175.          /// <summary>
  176.          /// 绘制文字
  177.          /// </summary>
  178.          /// <param name="p_CodeImage">图形</param>
  179.          /// <param name="p_Text">文字</param>
  180.          private   void  GetViewImage(Bitmap p_CodeImage, string  p_Text)
  181.         {
  182.              if  (m_ViewFont ==  null )  return ;
  183.             Graphics _Graphics = Graphics.FromImage(p_CodeImage);
  184.             SizeF _FontSize = _Graphics.MeasureString(p_Text, m_ViewFont);
  185.              if  (_FontSize.Width > p_CodeImage.Width || _FontSize.Height > p_CodeImage.Height - 20)
  186.             {
  187.                 _Graphics.Dispose();
  188.                  return ;
  189.             }
  190.              int  _StarHeight = p_CodeImage.Height - ( int )_FontSize.Height;
  191.             _Graphics.FillRectangle(Brushes.White,  new  Rectangle(0, _StarHeight, p_CodeImage.Width,( int )_FontSize.Height));
  192.              int  _StarWidth = (p_CodeImage.Width - ( int )_FontSize.Width) / 2;
  193.             _Graphics.DrawString(p_Text, m_ViewFont, Brushes.Black, _StarWidth, _StarHeight);
  194.             _Graphics.Dispose();
  195.         }
  196.     }
  197. }
http://blog.youkuaiyun.com/zgke/archive/2008/12/12/3503845.aspx

asp.net(C#)生成Code39条形码实例 条码枪可以扫描出 代码如下:using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Data; namespace MSCL{    ///     /// 生成条码Code39    ///     public class Code39    {      private Hashtable m_Code39 = new Hashtable();         private byte m_Magnify = 0;       立即下载

相关推荐

SpringBoot 通过 JMS 集成 IBM MQ

IBM MQ 作为老牌的企业级消息中间件,虽然在当下云原生时代已不再是主流选择,但在金融、银行、保险等传统行业的核心业务系统中仍然占据着重要地位。这些行业对系统的稳定性、可靠性和事务一致性有着极高的要求,IBM MQ 正是在这些方面表现出色。尽管近年来 RabbitMQ、Apache Kafka 等新一代消息中间件在新兴项目中更受欢迎,但许多金融公司和大型企业仍在使用 IBM MQ 作为核心业务系统的消息传递基础设施。

小单的博客专栏 952

C#中通过画线实现CODE39条码的生成方法

条形码的编码规则不外乎是通过线条和线条间间隙的宽窄不同来表示二进制的1和0,通过对条形码的编码规则的研究,完全可以用画图的方式在任何打印机上得到条形码。 下面在C#中通过画线的方法实现CODE39码的生成。 CODE39码的编码规则是: 1、 每五条线表示一个字符; 2、 粗线表示1,细线表示0; 3、 线条间的间隙宽的表示1,窄的表示0; 4、 五条线加上它们之间的四条间隙就

那一抹、璀璨 988

Airsim动态 | 安装ROS包装器(AirSim ROS Wrapper)

本期内容我们将带来在Airsim环境下使用ROS Wrapper的相关教程,以下是AirSim客户端库上的一些ROS Wrapper相关配置。 一、启动 以下步骤适用于 Linux 系统。如果是在 Windows 上运行 AirSim,可以使用 Windows Subsystem for Linux (WSL) 来运行 ROS 包装器,如果不想在主机上安装ROS相关工具,也可以使用Docker容器进行安装。请检查下方内容并按照需求安装,具体内容可以参照最后网址。 如果您的默认 GCC 版本不是8或更高版.

AMOVLAB(阿木实验室) 1776

c#编程 39条码的生成代码

c#编程 39条码的生成代码 using System;using System.Drawing;using System.Drawing.Imaging;using System.Collections;using System.Configuration;using System.Text.RegularExpressions;using System.Windows.Forms;na

qianzc88的专栏 2379

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

量化风控核心:信用评分卡模型的设计与迭代全流程

◦ 动态策略适配:根据评分卡结果动态调整风控流程——高分用户(>750分)秒级放款,中低分用户(600-700分)触发补充资料提交,低分用户(<600分)直接拒绝。◦ 特征有效性监控:每月计算特征IV值,对IV<0.1的低效特征(如“用户星座”)进行淘汰,同时引入新特征(如电商消费数据)。某城商行通过增量学习,评分卡PSI值长期稳定在0.1以下。◦ 数据筛选:整合征信数据(逾期记录、查询次数)、行为数据(消费频次、还款习惯),某银行评分卡纳入150+维度特征,覆盖用户偿债能力、意愿、稳定性等维度;

2501_91651383的博客 1483

39 条形码生成(C#)

借助39字体来显示条形码 一、新建一个类 Code39 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Drawing.Imaging; using System.IO; //na...

weixin_30279751的博客 234

Anaconda报错no qt platform plugin could be initialized

今天因为在anaconda中安装了一个新包,安装成功后运行python 程序报错:no qt platform plugin could be initialized。 1.安装Anaconda3-4.2.0-Windows-x86_64,对应python版本为3.5.2,scikit learn版本是0.17。因为要用Isolation Forest算法,只有0.18以上版本scikit learn才包含此算法,所以想更新scikit learn。 conda install scikit-lear

zhang1806618的博客 1万+

C#绘制条码CODE39和CODE39全码模式(转自:Zgke兄的文章)

  今天在论坛里看帖子,发现Zgke的绘制条码的文章不错,里面的代码,也不错,就自己试了一下。相当不错。自己加了一个文本框用来输入相应的值。下面是代码Code39.cs代码using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Da

我本无名的专栏 2073

NSFC结题报告下载脚本失效?3步教你手动修复下载按钮问题(2024最新版)

针对NSFC官网域名变更导致结题报告下载脚本失效的问题,本文提供了详细的手动修复指南。通过三步操作,教你如何修改用户脚本的域名匹配规则,恢复下载按钮功能,确保NSFC结题报告下载器能继续高效工作。

vscode6remote的博客 751

2024年厦门市第31届小学生C++信息学竞赛试题与解析(第一部分选择题1-10)

2024年厦门市第31届小学生C++信息学竞赛试题与解析(第一部分选择题1-10)

汉克老师的博客 108

用code39字体绘制条码

用code39字体绘制条码2007-01-30 16:26 using System;using System.Drawing;using System.Drawing.Imaging;using System.Drawing.Text;using System.IO;using System.Text.

1122

华为OD机试双机位C卷-开心消消乐(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【开心消消乐】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试 - 开心消消乐。

qq_45776114的博客 1512

以 .NET 创建 Code 39 条码图片 供水晶报表打印

日前做 ASP.NET 的项目用到 Crystal Reports 水晶报表,必须要能在浏览器中的报表显示和打印条码。原本我采用「字体 (font)」的方式产生条码 (水晶报表内置将某个数据库字段,直接转成条形码的功能),但后来发现这种做法,布署时必须在每一台客户端的 Windows 上安装特定的条码字体,如:free3of9 (可免费下载),才能在客户端浏览器正确显示和打印条码。因此后来弃用这种做法,改用「图片」的方式产生条码。

天祺围棋 1922

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C#.NET生成条形码(Code39和Code128)

项目开发中经常会用到生成条形码功能,根据某些唯一性内容生成条形码后用扫描枪扫码,可快速地识别信息。本文介绍常用的两种条形码Code39和Code128,适合生成自定义内容的条形码。 Code39条形码介绍: 一)Code39条形码特点 1、能够对任意长度的数据进行编码。其局限在于印刷品的长度和条码阅读器的识别范围。 2、支持设备广泛。目前几乎所有的条形码阅读设备都能阅读Code39码,打印机也是同样情况。 3、编制简单。简单的开发技术就能快速生成相应的编码图像。 4、一般Code39码由5条

wnety的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

生成条码Code39

//辅助类 using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Data; namespace ChaoFen.Common {     ///     /// 生成条码Code39     ///  

行者 1305

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

asp.net(C#)生成Code39条形码 条码枪可以扫描出

using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Data; namespace MSCL { /// /// 生成条码Code39 /// public class Code39

深南大道 5581

C#生成条码图片,并用条码打印机打印

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using

host_2007的专栏 7967

C#条码设计- Code39

      CODE39码是第一个可以包含数字和字母的条码规格 。除了超级市场,零售业应用中用使UPC/EAN码外,几乎在其他的应用环境中,都是使用CODE39码,可以说是,目前使用最为广泛的条码之一,也正因为如此支持CODE39码的设备最为齐全。        CODE 39码的构成:          1.能表示44个字符,字母都是大写          2.字符以“*”开始和结束

CraxyMouse 条码标签打印软件 .NET解决方案 3227

三极管静态工作点测量原理与工程实操指南

静态工作点(Q点)是三极管放大电路稳定工作的基础概念,其本质是器件在无信号输入时的直流偏置状态,由集电极电流I_CQ和集电极-发射极电压V_CEQ共同确定。理解其物理原理——载流子在PN结内的平衡分布与温度、工艺参数的耦合关系——是避免饱和/截止失真的前提。该参数直接决定放大线性度、动态范围与热稳定性,具有显著的技术价值:既是电路设计验证的实锤依据,也是故障诊断与器件筛选的核心指标。典型应用场景涵盖电子实训教学、硬件工程师调试、音频功放DIY及老式设备维修。本文聚焦‘三极管放大电路’中‘静态电压电流’的精准

weixin_34268169的博客 729
上一篇: 位图法应用
下一篇: .NET绘制条码Code128A,Code128B,Code128C,EAN128
heyangbin
博客等级 码龄19年 57粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值