zoukankan      html  css  js  c++  java
  • 高拍仪之20:生成一维码

    二维码已经能够识别,是基于开源的zxing实现的。从使用的角度来说,能够生成一下一二维码,也是很爽的事。

    以前做公安行业项目时,接触过条码打印机,是不是就是这里所说的一维码呢?

    当然,没有必要老提当年的事。做技术的,做得越久,就会更加发现以前做的都有点垃圾,灰飞烟灭后,发现只是手留余香,现在做什么技术方面的事情能够比较快地实现而已。

    花了一天时间,在cptang发来的控件的基础上,完整地实现了生成一维码功能。正准备再接再厉实现二维码,结果用户与我联系,说今天下午有个重量级用户来,要给他演示原理示教系统,准备在河北廊坊推广。倒是好事。那就先把二维码放下,实现起来应该还需要半天时间。

    生成一二维码,首先是界面,在插入栏中加入图标即可,剩下的是设置一下Tag、OnClick事件。

    再加入一维码类:

    class TBarCode1D : public TCbwImage {

        typedef TCbwImage inherited;

        virtual void __fastcall DoAddToXmlNode(CbwXmlNode * node);

        virtual void __fastcall DoGetFromXmlNode(CbwXmlNode * node, int& index);

        virtual void __fastcall Clone(TCbwObject * dest);

        void __fastcall CreateBmpFile();

    public:

        __fastcall TBarCode1D();

        __fastcall ~TBarCode1D();

        __fastcall TBarCode1D(TBuildType buildFlag);

        static TCbwObject * Build();

        void __fastcall Initial();

    };

    下来就是逐个研究其数据成员。

    运行一下控件的示例程序:

    一个个属性研究(这一天时间主要就花在这上面了),在之前编程的基础上,很快可以分门别类地实现各个成员:

    enum TBarCode1DType {

        _Codabar = 0, _Code11 = 1, _Code25Industrial = 2, _Code25Invert = 3, _IATA = 4, _Code25Interleaved = 5,

        _Code25Matrix = 6, _Code25Datalogic = 7, _Coop25 = 8, _Leitcode = 9, _Identcode = 10, _ITF_6 = 11,

        _ITF_14 = 12, _ITF_16 = 13, _Code39 = 14, _UPU = 15, _Code39Extension = 16, _Code32 = 17, _PZN = 18, _Code93 = 19,

        _Code93Extension = 20, _Plessey = 21, _MSI = 22, _Telepen = 23, _PharmacodeOneTrack = 24, _PharmacodeTwoTrack = 25,

        _UPC_A = 26, _UPC_E = 27, _UPC_E0 = 28, _UPC_E1 = 29, _EAN_2 = 30, _EAN_5 = 31, _EAN_8 = 32, _EAN_13 = 33,

        _Code_128 = 34, _EAN_128 = 35, _Flattermarken = 36, _Channel_Code = 37, _BC309 = 38, _BC412 = 39, _Clocked_35 = 40,

        _FIM = 41, _Patch_Code = 42, _PLANET = 43, _PostNet = 44, _KIX4S = 45, _JapanPost = 46, _RM4SCC = 47, _AP4SC = 48,

        _CPC_Binary = 49, _PostBar = 50, _OneCode = 51

    };

    enum TBarOrientation {

        boLeftRight, boRightLeft, boTopBottom, boBottomTop

    };

    enum TBarDisplayText {

        dtNone, dtBarcode, dtFullEncoded

    };

    enum TBarTextAlignment {

        taLeft, taCenter, taRight, taJustify, taLeftQuietZone, taCenterQuietZone, taRightQuietZone, taJustifyQuietZone,

        taCustom

    };

    enum TBarTextPosition {

        tpTopIn, tpTopOut, tpBottomIn, tpBottomOut

    };

    enum TBarEndCode {

        A, B, C, D

    };

    enum TBarPadding {

        cipLeft, cipRight

    };

    enum TBarBearer {

        bbFourSides, bbTopBottom

    };

    class TBarCode1D : public TCbwImage {

        CBW_PUBLISH_BARCODE(UnicodeString, BarCode, FBarCode, SetBarCode);

        CBW_PUBLISH_BARCODE(TBarCode1DType, Type, FType, SetType);

        CBW_PUBLISH_BARCODE(int, Module, FModule, SetModule);

        CBW_PUBLISH_BARCODE(double, BarRatio, FBarRatio, SetBarRatio);

        CBW_PUBLISH_BARCODE(int, BarHeight, FBarHeight, SetBarHeight);

        CBW_PUBLISH_BARCODE(TBarOrientation, BarOrientation, FBarOrientation, SetBarOrientation);

        CBW_PUBLISH_BARCODE(TColor, BarColor, FBarColor, SetBarColor);

        CBW_PUBLISH_BARCODE(TColor, SpaceColor, FSpaceColor, SetSpaceColor);

        CBW_PUBLISH_BARCODE(int, LeftMargin, FLeftMargin, SetLeftMargin);

        CBW_PUBLISH_BARCODE(int, TopMargin, FTopMargin, SetTopMargin);

        CBW_PUBLISH_BARCODE(TBarDisplayText, DisplayText, FDisplayText, SetDisplayText);

        CBW_PUBLISH_BARCODE(TBarTextAlignment, TextAlignment, FTextAlignment, SetTextAlignment);

        CBW_PUBLISH_BARCODE(TBarTextPosition, TextPosition, FTextPosition, SetTextPosition);

        CBW_PUBLISH_BARCODE(int, TextCSpacing, FTextCSpacing, SetTextCSpacing);

        CBW_PUBLISH_BARCODE(int, TextVSpacing, FTextVSpacing, SetTextVSpacing);

        CBW_PUBLISH_BARCODE(int, TextHSpacing, FTextHSpacing, SetTextHSpacing);

        CBW_PUBLISH_BARCODE(TBarEndCode, StartCode, FStartCode, SetStartCode);

        CBW_PUBLISH_BARCODE(TBarEndCode, StopCode, FStopCode, SetStopCode);

        CBW_PUBLISH_BARCODE(TBarPadding, Padding, FPadding, SetPadding);

        CBW_PUBLISH_BARCODE(bool, SplitText, FSplitText, SetSplitText);

        CBW_PUBLISH_BARCODE(TBarBearer, BearerBars, FBearerBars, SetBearerBars);

        CBW_PUBLISH_BARCODE(int, BearerWidth, FBearerWidth, SetBearerWidth);

        CBW_PUBLISH_BARCODE(int, LeftSpacing, FLeftSpacing, SetLeftSpacing);

        CBW_PUBLISH_BARCODE(int, RightSpacing, FRightSpacing, SetRightSpacing);

        CBW_PUBLISH_BARCODE(bool, ShowGuards, FShowGuards, SetShowGuards);

        CBW_PUBLISH_BARCODE(bool, InterGap, FInterGap, SetInterGap);

        CBW_PUBLISH_BARCODE(bool, Bidirectional, FBidirectional, SetBidirectional);

    };

    具体的事宜交给DrGraph软件去完成。

    最终实现效果:

    剩下的事,就是把不该出现的属性从属性浏览器中去掉,并把属性名称在资源文件中配置为中文,让自己的用户用得舒服一点。

  • 相关阅读:
    【Idea】设置springboot启动环境
    python base64加密解密
    binascii.Error: Incorrect padding
    DataFrame随机采样
    检测和过滤异常值
    离散化和面元划分
    AttributeError: 'Categorical' object has no attribute 'levels'
    AttributeError: 'Categorical' object has no attribute 'labels'
    重命名轴索引
    替换值replace
  • 原文地址:https://www.cnblogs.com/drgraph/p/3295924.html
Copyright © 2011-2022 走看看