2012-07-19 79 views
2

基于矢量的发生器是生成条形码的最佳方法吗?如果是,它将使用的命名空间是什么?它是如何使用的?任何人都可以分享这方面的知识吗?基于矢量的生成器是创建条形码的最佳方式吗?

+0

什么?你在说什么条形码?您是否考虑过寻找可以使用的第三方库? – 2012-07-19 07:30:32

+0

@MarkByers可能是一个普通条形码,http://en.wikipedia.org/wiki/Barcode。 – alexn 2012-07-19 07:31:18

+0

我正在谈论code39或code 128条形码。是的,我经历了许多第三方库,我不想使用这些库。我想呈现我自己的。 – Akshay 2012-07-19 08:21:02

回答

1

假设我们正在谈论像条形码UPC,基于矢量的一代是不是必须的。这是代表一些垂直线的问题。因此,您可以使用任何图形库甚至直接访问视频缓冲区轻松完成此操作。如果您需要更大的条形码,您可以用多个像素表示一个位。我猜你不需要使用任何插值。但是如果你需要一定的尺寸(像素/厘米等),基于矢量的解决方案可能会很少,但仍然不是必须的。

用于生成可缩放条形码图形的C#源代码示例。

步骤:

1)打开一个新的C#Windows窗体名为BarCode样本项目。

2)添加一个PictureBox并改变BackColorWhiteDockFill

3)将LoadResize事件添加到Form1

4)复制&将以下源代码粘贴在Form1.cs文件上。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace BarCode 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     public bool[] barCodeBits; 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      Random r = new Random(); 
      int numberOfBits = 100; 
      barCodeBits = new bool[numberOfBits]; 
      for(int i = 0; i < numberOfBits; i++) { 
       barCodeBits[i] = (r.Next(0, 2) == 1) ? true : false; 
      } 

      Form1_Resize(null, null); 
     } 

     private void Form1_Resize(object sender, EventArgs e) 
     { 
      int w = pictureBox1.Width; 
      int h = pictureBox1.Height; 

      pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); 
      Graphics g = Graphics.FromImage(pictureBox1.Image); 
      Brush b = new SolidBrush(Color.Black); 

      for(int pos = 0; pos < barCodeBits.Length; pos++) { 
       if(barCodeBits[pos]) { 
        g.FillRectangle(b, ((float)pos/(float)barCodeBits.Length) * w, 0, (1.0f/(float)barCodeBits.Length) * w, h); 
       } 
      } 
     } 
    } 
} 
+0

我正在谈论code39或code 128条形码。我想呈现我自己的。我将使用C#生成条形码。您提到了直接访问视频缓冲区,我们如何实现这一目标? – Akshay 2012-07-19 08:23:11

+0

我是在泛泛而谈,而不是平台/语言特定。使用.NET,我建议使用GDI +。我想你已经知道如何生成条形码,但是你正在寻找一种方法来将它们渲染成图像,对吗?如果是这样,我会尽快更新我的问题。 – 2012-07-19 11:36:53

+0

Yup tats rite。我已经在研究如何使用位图手动绘制每条线,但发现绘制条形码线有点困难。 – Akshay 2012-07-19 11:50:11

0

您不必使用基于矢量的图形来开发条形码。我其实看看this link on codeproject,因为大部分工作已经完成了。这生成了所需条形码的位图。

+0

我经历了许多第三方库,我不想使用这些库。我想呈现我自己的。 – Akshay 2012-07-20 04:58:29

+0

@Akshay - 链接不是第三方库 - 它是完整的来源,使您能够自己渲染! – 2012-07-20 07:25:23

相关问题