首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

WPF 打印 1维码(条形码)图片

2013-01-11 
WPF 打印 一维码(条形码)图片。有没有可以参考的源代码?我需要的是可以打印的一维码图片。。不是字符串。也不

WPF 打印 一维码(条形码)图片。
有没有可以参考的源代码?
我需要的是可以打印的一维码图片。。
不是字符串。也不是其他格式的。
我知道可以转换。但是请给出转换成图片的方法。 刚做过..我做的是打印..一个原理..

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Me.BarcodeSoftware.Barcode
{
    public class Code39
    {
        //w - wide
        //t - thin
        //Start the drawing with black, white, black, white......
        public string encode(string data, int chk)
        {
            string fontOutput = mcode(data, chk);
            string output = "";
            string pattern = "";
            for (int x = 0; x < fontOutput.Length; x++)
            {
                switch (fontOutput[x])
                {
                    case '1':
                        pattern = "wttwttttwt";
                        break;
                    case '2':
                        pattern = "ttwwttttwt";
                        break;
                    case '3':
                        pattern = "wtwwtttttt";
                        break;
                    case '4':
                        pattern = "tttwwtttwt";
                        break;
                    case '5':
                        pattern = "wttwwttttt";


                        break;
                    case '6':
                        pattern = "ttwwwttttt";
                        break;
                    case '7':
                        pattern = "tttwttwtwt";
                        break;
                    case '8':
                        pattern = "wttwttwttt";
                        break;
                    case '9':
                        pattern = "ttwwttwttt";
                        break;
                    case '0':
                        pattern = "tttwwtwttt";
                        break;
                    case 'A':
                        pattern = "wttttwttwt";
                        break;
                    case 'B':
                        pattern = "ttwttwttwt";
                        break;
                    case 'C':
                        pattern = "wtwttwtttt";
                        break;
                    case 'D':


                        pattern = "ttttwwttwt";
                        break;
                    case 'E':
                        pattern = "wtttwwtttt";
                        break;
                    case 'F':
                        pattern = "ttwtwwtttt";
                        break;
                    case 'G':
                        pattern = "tttttwwtwt";
                        break;
                    case 'H':
                        pattern = "wttttwwttt";
                        break;
                    case 'I':
                        pattern = "ttwttwwttt";
                        break;
                    case 'J':
                        pattern = "ttttwwwttt";
                        break;
                    case 'K':
                        pattern = "wttttttwwt";
                        break;
                    case 'L':
                        pattern = "ttwttttwwt";
                        break;


                    case 'M':
                        pattern = "wtwttttwtt";
                        break;
                    case 'N':
                        pattern = "ttttwttwwt";
                        break;
                    case 'O':
                        pattern = "wtttwttwtt";
                        break;
                    case 'P':
                        pattern = "ttwtwttwtt";
                        break;
                    case 'Q':
                        pattern = "ttttttwwwt";
                        break;
                    case 'R':
                        pattern = "wtttttwwtt";
                        break;
                    case 'S':
                        pattern = "ttwtttwwtt";
                        break;
                    case 'T':
                        pattern = "ttttwtwwtt";
                        break;
                    case 'U':
                        pattern = "wwttttttwt";


                        break;
                    case 'V':
                        pattern = "twwtttttwt";
                        break;
                    case 'W':
                        pattern = "wwwttttttt";
                        break;
                    case 'X':
                        pattern = "twttwtttwt";
                        break;
                    case 'Y':
                        pattern = "wwttwttttt";
                        break;
                    case 'Z':
                        pattern = "twwtwttttt";
                        break;
                    case '-':
                        pattern = "twttttwtwt";
                        break;
                    case '.':
                        pattern = "wwttttwttt";
                        break;
                    case ' ':
                        pattern = "twwtttwttt";
                        break;
                    case '*':


                        pattern = "twttwtwttt";
                        break;
                    case '$':
                        pattern = "twtwtwtttt";
                        break;
                    case '/':
                        pattern = "twtwtttwtt";
                        break;
                    case '+':
                        pattern = "twtttwtwtt";
                        break;
                    case '%':
                        pattern = "tttwtwtwtt";
                        break;
                }
                output = output.Insert(output.Length, pattern);
            }
            return output;
        }

        private string humanText;
        static char[] CODE39MAP = {'0','1','2','3','4','5','6','7','8','9',
 'A','B','C','D','E','F','G','H','I','J',
 'K','L','M','N','O','P','Q','R','S','T',
 'U','V','W','X','Y','Z','-','.',' ','$',    
 '/','+','%'};

        private string mcode(string data, int chk)
        {
            string cd = "", result = "";
            string filtereddata = filterInput(data);
            int filteredlength = filtereddata.Length;

            if (chk == 1)
            {
                if (filteredlength > 254)


                    filtereddata = filtereddata.Remove(254, filteredlength - 254);
                cd = generateCheckDigit(filtereddata);
            }
            else
            {
                if (filteredlength > 255)
                    filtereddata = filtereddata.Remove(255, filteredlength - 255);
            }

            result = "*" + filtereddata + cd + "*";
            humanText = result;
            return result;
        }

        public string getHumanText()
        {
            return humanText;
        }

        string generateCheckDigit(string data)
        {

            int datalength = 0;
            int sum = 0;
            int result = -1;
            string strResult = "";
            char barcodechar;

            datalength = data.Length;
            for (int x = 0; x < datalength; x++)
            {
                barcodechar = data[x];
                sum = sum + getCode39Value(barcodechar);
            }
            result = sum % 43;
            strResult = getCode39Character(result).ToString();

            return strResult;

        }
        char getCode39Character(int inputdecimal)
        {
            return CODE39MAP[inputdecimal];
        }

        int getCode39Value(char inputchar)


        {
            for (int x = 0; x < 43; x++)
            {
                if (CODE39MAP[x] == inputchar)
                    return x;
            }
            return -1;
        }

        string filterInput(string data)
        {
            string result = "";
            int datalength = data.Length;

            for (int x = 0; x < datalength; x++)
            {
                char barcodechar = data[x];
                if (getCode39Value(barcodechar) != -1)
                    result = result.Insert(result.Length, barcodechar.ToString());
            }

            return result;
        }

    }


}

热点排行