C#-此文是利用ZXing.Net的dll文件在WinForm中生成條形碼、二維碼測試案例帕涌,提供學習分享使用摄凡。

1、ZXing.Net介紹:

? ???????????ZXing是一個開放源碼的蚓曼,用Java實現(xiàn)的多種格式的1D/2D條碼圖像處理庫亲澡,它包含了聯(lián)系到其他語言的端口。而ZXing.Net是ZXing的端口之一纫版。這里是Zxing文件下載地址床绪,提取密碼是56jn;

2其弊、在項目的引用中添加這個dll文件的引用癞己,如下圖所示:

3、添加關鍵代碼展示:

? ? (1):這個方法是生成打印的二維碼圖片梭伐,需要修改的地方就是你自己電腦保存圖片文件的位置痹雅,在Save()方法處修改。

? ??????/// <summary>

? ? ? ? /// 生成二維碼圖片

? ? ? ? /// </summary>

? ? ? ? /// <param name="strMessage">要生成二維碼的字符串</param>

? ? ? ? /// <param name="width">二維碼圖片寬度</param>

? ? ? ? /// <param name="height">二維碼圖片高度</param>

? ? ? ? /// <returns></returns>

? ? ? ? private Bitmap GetQRCodeByZXingNet(String strMessage, Int32 width, Int32 height)

? ? ? ? {

? ? ? ? ? ? Bitmap result = null;

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? BarcodeWriter barCodeWriter = new BarcodeWriter();

? ? ? ? ? ? ? ? barCodeWriter.Format = BarcodeFormat.QR_CODE; //是個枚舉類型,可以選擇打印條碼的內(nèi)容

? ? ? ? ? ? ? ? barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");

? ? ? ? ? ? ? ? barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H);

? ? ? ? ? ? ? ? barCodeWriter.Options.Height = height;

? ? ? ? ? ? ? ? barCodeWriter.Options.Width = width;

? ? ? ? ? ? ? ? barCodeWriter.Options.Margin = 0;

? ? ? ? ? ? ? ? ZXing.Common.BitMatrix bm = barCodeWriter.Encode(strMessage);

? ? ? ? ? ? ? ? result = barCodeWriter.Write(bm);

? ? ? ? ? ? ? ? string imgName = DateTime.Now.Millisecond.ToString();

? ? ? ? ? ? ? ? result.Save(@"E:\測試\" + imgName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

? ? ? ? ? ? }

? ? ? ? ? ? catch (Exception ex)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? this.textBox2.Text = Convert.ToString(ex);

? ? ? ? ? ? }

? ? ? ? ? ? return result;

? ? ? ? }


(2):這個方法是生成打印的二維碼圖片糊识,需要修改的地方就是你自己電腦保存圖片文件的位置绩社,在Save()方法處修改。

????????/// <summary>

? ? ? ? /// 生成帶Logo的二維碼

? ? ? ? /// </summary>

? ? ? ? /// <param name="text">內(nèi)容</param>

? ? ? ? /// <param name="width">寬度</param>

? ? ? ? /// <param name="height">高度</param>

? ? ? ? private Bitmap GetQRCodeByZXingNetTwo(String strMessage, Int32 width, Int32 height)

? ? ? ? {

? ? ? ? ? ? Bitmap result = null;

? ? ? ? ? ? Bitmap bmpimg = null;

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? BarcodeWriter barCodeWriter = new BarcodeWriter();

? ? ? ? ? ? ? ? barCodeWriter.Format = BarcodeFormat.QR_CODE; //是個枚舉類型,可以選擇打印條碼的內(nèi)容

? ? ? ? ? ? ? ? barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");

? ? ? ? ? ? ? ? barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H);

? ? ? ? ? ? ? ? barCodeWriter.Options.Height = height;

? ? ? ? ? ? ? ? barCodeWriter.Options.Width = width;

? ? ? ? ? ? ? ? barCodeWriter.Options.Margin = 0;

? ? ? ? ? ? ? ? ZXing.Common.BitMatrix bm = barCodeWriter.Encode(strMessage);

? ? ? ? ? ? ? ? result = barCodeWriter.Write(bm);

? ? ? ? ? ? ? ? string imgName = DateTime.Now.Hour.ToString() + DateTime.Now.Millisecond.ToString();

? ? ? ? ? ? ? ? result.Save(@"E:\測試\" + imgName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

? ? ? ? ? ? ? ? string logoPath = @"E:\VS2013Projects\BaPrint\ZXingTest\img\timg.jpg";

? ? ? ? ? ? ? ? Bitmap logo = new Bitmap(logoPath);

? ? ? ? ? ? ? ? //獲取二維碼實際尺寸(去掉二維碼兩邊空白后的實際尺寸)

? ? ? ? ? ? ? ? int[] rectangle = bm.getEnclosingRectangle();

? ? ? ? ? ? ? ? //計算插入圖片的大小和位置

? ? ? ? ? ? ? ? int middleW = Math.Min((int)(rectangle[2] / 3), logo.Width);

? ? ? ? ? ? ? ? int middleH = Math.Min((int)(rectangle[3] / 3), logo.Height);

? ? ? ? ? ? ? ? int middleL = (result.Width - middleW) / 2;

? ? ? ? ? ? ? ? int middleT = (result.Height - middleH) / 2;

? ? ? ? ? ? ? ? //Bitmap bmpimg = new Bitmap(result.Width, result.Height, PixelFormat.Format32bppArgb);

? ? ? ? ? ? ? ? bmpimg = new Bitmap(result.Width, result.Height, PixelFormat.Format32bppArgb);

? ? ? ? ? ? ? ? using (Graphics g = Graphics.FromImage(bmpimg))

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

? ? ? ? ? ? ? ? ? ? g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

? ? ? ? ? ? ? ? ? ? g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

? ? ? ? ? ? ? ? ? ? g.DrawImage(result, 0, 0, width, height);

? ? ? ? ? ? ? ? ? ? //白底將二維碼插入圖片

? ? ? ? ? ? ? ? ? ? g.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH);

? ? ? ? ? ? ? ? ? ? g.DrawImage(logo, middleL, middleT, middleW, middleH);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? bmpimg.Save(@"E:\測試\" + imgName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

? ? ? ? ? ? }

? ? ? ? ? ? catch (Exception ex)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? this.textBox1.Text = Convert.ToString(ex);

? ? ? ? ? ? }

? ? ? ? ? ? return bmpimg;

? ? ? ? }

????????/// <summary>

? ? ? ? /// 刪除默認對應的空白

? ? ? ? /// </summary>

? ? ? ? /// <param name="matrix"></param>

? ? ? ? /// <returns></returns>

? ? ? ? private static BitMatrix deleteWhite(BitMatrix matrix)

? ? ? ? {

? ? ? ? ? ? int[] rec = matrix.getEnclosingRectangle();

? ? ? ? ? ? int resWidth = rec[2] + 1;

? ? ? ? ? ? int resHeight = rec[3] + 1;

? ? ? ? ? ? BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);

? ? ? ? ? ? resMatrix.clear();

? ? ? ? ? ? for (int i = 0; i < resWidth; i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? for (int j = 0; j < resHeight; j++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? if (matrix[i + rec[0], j + rec[1]])

? ? ? ? ? ? ? ? ? ? ? ? resMatrix[i, j] = true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? return resMatrix;

? ? ? ? }


如果想要打印條形碼在下圖所示處選擇想要打印條碼的格式

好了,

生成條形碼和二維碼的方式多種赂苗,條碼的種類也有很多種愉耙,每一種都有其對應的應用領域,希望此文能夠幫到你

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拌滋,一起剝皮案震驚了整個濱河市朴沿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖赌渣,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魏铅,死亡現(xiàn)場離奇詭異,居然都是意外死亡坚芜,警方通過查閱死者的電腦和手機沦零,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來货岭,“玉大人,你說我怎么就攤上這事疾渴∏Ч幔” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵搞坝,是天一觀的道長搔谴。 經(jīng)常有香客問我,道長桩撮,這世上最難降的妖魔是什么敦第? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮店量,結(jié)果婚禮上芜果,老公的妹妹穿的比我還像新娘。我一直安慰自己融师,他們只是感情好右钾,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旱爆,像睡著了一般舀射。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怀伦,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天脆烟,我揣著相機與錄音,去河邊找鬼房待。 笑死邢羔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吴攒。 我是一名探鬼主播张抄,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洼怔!你這毒婦竟也來了署惯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤镣隶,失蹤者是張志新(化名)和其女友劉穎极谊,沒想到半個月后诡右,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡轻猖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年帆吻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咙边。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡猜煮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出败许,到底是詐尸還是另有隱情王带,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布市殷,位于F島的核電站愕撰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏醋寝。R本人自食惡果不足惜搞挣,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望音羞。 院中可真熱鬧囱桨,春花似錦、人聲如沸黄选。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽办陷。三九已至貌夕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間民镜,已是汗流浹背啡专。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留制圈,地道東北人们童。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像鲸鹦,于是被迫代替她去往敵國和親慧库。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容