WPF 打印 一维码(条形码)图片。

x624722359 2012-12-14 06:29:15
有没有可以参考的源代码?
我需要的是可以打印的一维码图片。。
不是字符串。也不是其他格式的。
我知道可以转换。但是请给出转换成图片的方法。
...全文
537 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xtiu77 2013-01-01
  • 打赏
  • 举报
回复
这个要用到Graphics...new 一个BITMAP...graphics.draw......
x624722359 2012-12-26
  • 打赏
  • 举报
回复
引用 8 楼 xtiu77 的回复:
刚做过..我做的是打印..一个原理..C# code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848……
。。和你这代码 类似的我也有,问题是怎么将条形码转换为图片。能够被仪器扫描的图片。 也就你回答用了点心。分给你吧。
xtiu77 2012-12-23
  • 打赏
  • 举报
回复
刚做过..我做的是打印..一个原理..
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;
        }

    }


}
china_jeffery 2012-12-21
  • 打赏
  • 举报
回复
楼主说的应该是条形码吧
  • 打赏
  • 举报
回复
我很好奇一维码是什么
夜空皓月 2012-12-21
  • 打赏
  • 举报
回复
你是要根据一个字符串生成一个一维码,还是只是要打印一个带一维码的图片? 如果是第一个的话不用想了,你知道有多少种一维码么,每种又有很多设置,外面找找控件看看。 如果是第二个,看看打印发面的资料,很多,很简单。
x624722359 2012-12-21
  • 打赏
  • 举报
回复
还是没人?啊
x624722359 2012-12-17
  • 打赏
  • 举报
回复
没人会吗??我再自己顶顶。再没人就无满意结贴了额
x624722359 2012-12-14
  • 打赏
  • 举报
回复
自己顶顶!!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧