コードをCode 128フォントで印刷

16795 ワード

プロジェクトはすでに終わりに着いて、開発業はもうすぐ終わって、ちょうど良いバーコードの紙と炭素の帯を手に入れて、打って、'-'の128ヤードをプラスして、読み取りの取得速度はそんなに速くなくて、とても読みやすくなくて、バーコードのピクチャーを生成する方式を使って印刷するので、やはり問題があるようで、前に指令を使って直接印刷したことがあって、バーコードは読むのが速くて、しかしその他の文字の大きさは制御できなくて、放棄しました.
128フォントで印刷する方法が見つかりました.もちろん読み取りの効果はまだテストされていません.まず方法を貼って、明日速度をテストします.
128コードを変換する方法は2つありますが、明日テストが必要です.
方式A:
 1 private string StringToCode128(string String)

 2         {

 3             try

 4             {

 5                 char endChar = (char)0;

 6                 Int64 total = 104;

 7                 int tmp;

 8                 Int64 endAsc;

 9                 for (int i = 0; i < String.Length; i++)

10                 {

11                     tmp = (int)(Convert.ToChar(String.Substring(i, 1)));

12                     if (tmp >= 32)

13                     {

14                         total += (tmp - 32) * (i + 1);

15                     }

16                     else

17                     {

18                         total += (tmp + 64) * (i + 1);

19                     }

20                 }

21                 endAsc = total % 103;

22                 if (endAsc >= 95)

23                 {

24                     switch (endAsc)

25                     {

26                         case 95:

27                             endChar = '?';

28                             break;

29                         case 96:

30                             endChar = '?';

31                             break;

32                         case 97:

33                             endChar = '?';

34                             break;

35                         case 98:

36                             endChar = '?';

37                             break;

38                         case 99:

39                             endChar = '?';

40                             break;

41                         case 100:

42                             endChar = 'è';

43                             break;

44                         case 101:

45                             endChar = 'é';

46                             break;

47                         case 102:

48                             endChar = 'ê';

49                             break;

50                     }

51                 }

52                 else

53                 {

54                     endAsc += 32;

55                     endChar = (char)endAsc;

56                 }

57                 return "ì" + String + endChar.ToString() + "?";

58 

59             }

60             catch (Exception ex)

61             {

62                 MessageBox.Show("Error:" + ex.Message);

63                 return string.Empty;

64             }

65 

66         }

方法B:
 1 private string Get128CodeString(string inputData)

 2         {

 3             string result;

 4             int checksum = 104;

 5             for (int ii = 0; ii < inputData.Length; ii++)

 6             {

 7                 if (inputData[ii] >= 32)

 8                 {

 9                     checksum += (inputData[ii] - 32) * (ii + 1);

10                 }

11                 else

12                 {

13                     checksum += (inputData[ii] + 64) * (ii + 1);

14                 }

15             }

16             checksum = checksum % 103;

17             if (checksum < 95)

18             {

19                 checksum += 32;

20             }

21             else

22             {

23                 checksum += 100;

24             }

25             result = Convert.ToChar(204) + inputData.ToString() + Convert.ToChar(checksum) + Convert.ToChar(206);

26             return result;

27         }
  Font ft_BarCode = new System.Drawing.Font("Code 128", 43, FontStyle.Regular, GraphicsUnit.World);



  Font ft1 = new System.Drawing.Font("Times New Roman", 14, FontStyle.Regular, GraphicsUnit.World);







gB.DrawString(Get128CodeString(this.gridView1.GetRowCellValue(e.RowHandle, "BARCODE").ToString()),

ft_BarCode, b1, new Point(40, 138));// new Rectangle(40, 138, 230, 40));



gB.DrawString("*"+this.gridView1.GetRowCellValue(e.RowHandle, "BARCODE").ToString()+"*",

new Font(this.Font.FontFamily, 10, FontStyle.Regular), b1, new Point(100, 177));// new Rectangle(80, 180, 230, 20));