2012-07-19 28 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

相關問題