zoukankan      html  css  js  c++  java
  • 生成二维码

    在生成一维码的基础上,再做二维码,感觉就是重复劳动而已。

    但也有提高。

    首先把诸多的类型转化为字符串,通过资源配置方式来设置,这样就减轻了程序的工作。

    当然,这个首先是顺便的,因为在实现之前,看了一下Demo程序,发现不同类型的二维码,它们可能包括同一个属性名称,如MinSize和MaxSize

    在MicroPDF417类型下,它的可取值为mpSize_1_11,mpSize_1_14,mpSize_1_17,mpSize_1_20,mpSize_1_24,mpSize_1_28,mpSize_2_8,mpSize_2_11,mpSize_2_14,mpSize_2_17,mpSize_2_20,mpSize_2_23,mpSize_2_26,mpSize_3_6,mpSize_3_8,mpSize_3_10,mpSize_3_12,mpSize_3_15,mpSize_3_20,mpSize_3_26,mpSize_3_32,mpSize_3_38,mpSize_3_44,mpSize_4_4,mpSize_4_6,mpSize_4_8,mpSize_4_10,mpSize_4_12,mpSize_4_15,mpSize_4_20,mpSize_4_26,mpSize_4_32,mpSize_4_38,mpSize_4_44

    而在DataMatrix类型下,它的可取值为dmSize_09_09,dmSize_11_11,dmSize_13_13,dmSize_15_15,dmSize_17_17,dmSize_19_19,dmSize_21_21,dmSize_23_23,dmSize_25_25,dmSize_27_27,dmSize_29_29,dmSize_31_31,dmSize_33_33,dmsize_35_35,dmSize_37_37,dmSize_39_39,dmSize_41_41,dmSize_43_43,dmSize_45_45,dmSize_47_47,dmSize_49_49

    刚开始以为是个例,结果发现居然有很多。

    那还能用一个类来实现吗?

    经过琢磨,发现还真能用一个类来实现:

    class TBarCode2D : public TCbwImage {

        typedef TCbwImage inherited;

        CBW_PUBLISH_BARCODE(UnicodeString, BarCode, FBarCode, SetBarCode);

        CBW_PUBLISH_BARCODE(UnicodeString, Type, FType, SetType);

        CBW_PUBLISH_BARCODE(int, Module, FModule, SetModule); // AztecCode,AztecRunes,HanXinCode

        CBW_PUBLISH_BARCODE(int, LeftMargin, FLeftMargin, SetLeftMargin); // AztecCode,AztecRunes,HanXinCode

        CBW_PUBLISH_BARCODE(int, TopMargin, FTopMargin, SetTopMargin); // AztecCode,AztecRunes,HanXinCode

        CBW_PUBLISH_BARCODE(TColor, BarColor, FBarColor, SetBarColor); // AztecCode,AztecRunes,HanXinCode

        CBW_PUBLISH_BARCODE(TColor, SpaceColor, FSpaceColor, SetSpaceColor); // AztecCode,AztecRunes,HanXinCode

        CBW_PUBLISH_BARCODE(TBarOrientation, BarOrientation, FBarOrientation, SetBarOrientation);    // AztecCode,AztecRunes,HanXinCode

        CBW_PUBLISH_BARCODE(bool, ShowQuietZone, FShowQuietZone, SetShowQuietZone); // AztecCode,AztecRunes,HanXinCode

        CBW_PUBLISH_BARCODE(bool, BytesAlwaysBackToUpper, FBytesAlwaysBackToUpper, SetBytesAlwaysBackToUpper); // AztecCode

        CBW_PUBLISH_BARCODE(bool, AllowEscape, FAllowEscape, SetAllowEscape); // AztecCode,HanXinCode

        CBW_PUBLISH_BARCODE(TBarSymbolMode, SymbolMode, FSymbolMode, SetSymbolMode); // AztecCode

        CBW_PUBLISH_BARCODE(UnicodeString, MinSize, FMinSize, SetMinSize); // AztecCode

        CBW_PUBLISH_BARCODE(UnicodeString, MaxSize, FMaxSize, SetMaxSize); // AztecCode

        CBW_PUBLISH_BARCODE(UnicodeString, ECCLevel, FECCLevel, SetECCLevel); // AztecCode,HanXinCode

        CBW_PUBLISH_BARCODE(int, ECCCount, FECCCount, SetECCCount); // AztecCode

        CBW_PUBLISH_BARCODE(bool, Inversed, FInversed, SetInversed); // AztecCode,AztecRunes

        CBW_PUBLISH_BARCODE(bool, FixedLength, FFixedLength, SetFixedLength); // AztecRunes

        CBW_PUBLISH_BARCODE(bool, Mirrored, FMirrored, SetMirrored); // AztecRunes

        CBW_PUBLISH_BARCODE(bool, Locked, FLocked, SetLocked); // AztecRunes

        CBW_PUBLISH_BARCODE(int, LeadingQuietZone, FLeadingQuietZone, SetLeadingQuietZone); // HanXinCode

        CBW_PUBLISH_BARCODE(int, TrailingQuietZone, FTrailingQuietZone, SetTrailingQuietZone); // HanXinCode

        CBW_PUBLISH_BARCODE(int, MinVersion, FMinVersion, SetMinVersion); // HanXinCode

        CBW_PUBLISH_BARCODE(int, MaxVersion, FMaxVersion, SetMaxVersion); // HanXinCode

        CBW_PUBLISH_BARCODE(bool, ECCLevelUpgrade, FECCLevelUpgrade, SetECCLevelUpgrade); // AztecRunes, HanXinCode

        CBW_PUBLISH_BARCODE(bool, ReviseVersion5, FReviseVersion5, SetReviseVersion5); // HanXinCode

        CBW_PUBLISH_BARCODE(int, MinSegments, FMinSegments, SetMinSegments); // CompactMatrix

        CBW_PUBLISH_BARCODE(int, MaxSegments, FMaxSegments, SetMaxSegments); // CompactMatrix

        CBW_PUBLISH_BARCODE(UnicodeString, StretchOrder, FStretchOrder, SetStretchOrder); // CompactMatrix

        CBW_PUBLISH_BARCODE(int, StartWidth, FStartWidth, SetStartWidth); // CompactMatrix

        CBW_PUBLISH_BARCODE(int, StopWidth, FStopWidth, SetStopWidth); // CompactMatrix

        CBW_PUBLISH_BARCODE(UnicodeString, Placement, FPlacement, SetPlacement); // CompactMatrix

        CBW_PUBLISH_BARCODE(UnicodeString, Shape, FShape, SetShape); // DataMatrixEcc200

        CBW_PUBLISH_BARCODE(UnicodeString, EncodeMode, FEncodeMode, SetEncodeMode); // DataMatrix

        CBW_PUBLISH_BARCODE(bool, AutoMode, FAutoMode, SetAutoMode); // MaxiCode

        CBW_PUBLISH_BARCODE(bool, AllowKanjiMode, FAllowKanjiMode, SetAllowKanjiMode); // QrCode

        CBW_PUBLISH_BARCODE(UnicodeString, EncodePolicy, FEncodePolicy, SetEncodePolicy); // QrCode

        CBW_PUBLISH_BARCODE(int, MinRows, FMinRows, SetMinRows); // PDF417

        CBW_PUBLISH_BARCODE(int, MaxRows, FMaxRows, SetMaxRows); // PDF417

        CBW_PUBLISH_BARCODE(int, MinColumns, FMinColumns, SetMinColumns); // PDF417

        CBW_PUBLISH_BARCODE(int, MaxColumns, FMaxColumns, SetMaxColumns); // PDF417

        CBW_PUBLISH_BARCODE(int, RowHeight, FRowHeight, SetRowHeight);     // PDF417

        CBW_PUBLISH_BARCODE(bool, Compact, FCompact, SetCompact); // PDF417

        CBW_PUBLISH_BARCODE(UnicodeString, DefaultEncodeMode, FDefaultEncodeMode, SetDefaultEncodeMode); // MicroPDF417

        CBW_PUBLISH_BARCODE(UnicodeString, DefaultTextEncodeMode, FDefaultTextEncodeMode, SetDefaultTextEncodeMode); // MicroPDF417

        CBW_PUBLISH_BARCODE(bool, UseECIDescriptor, FUseECIDescriptor, SetUseECIDescriptor); // MicroPDF417

        CBW_PUBLISH_BARCODE(UnicodeString, InitialMode, FInitialMode, SetInitialMode); // Code16K

        CBW_PUBLISH_BARCODE(int, SeparatorBarHeight, FSeparatorBarHeight, SetSeparatorBarHeight); // Code16K

        CBW_PUBLISH_BARCODE(bool, AutoCheckDigit, FAutoCheckDigit, SetAutoCheckDigit); // RSS-14

        CBW_PUBLISH_BARCODE(int, TotalHeight, FTotalHeight, SetTotalHeight); // RSS-14

        CBW_PUBLISH_BARCODE(UnicodeString, Style, FStyle, SetStyle); // RSS-14

        CBW_PUBLISH_BARCODE(bool, Link2D, FLink2D, SetLink2D); // RSS-14

        virtual void __fastcall DoAddToXmlNode(CbwXmlNode * node);

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

        virtual void __fastcall Clone(TCbwObject * dest);

        virtual UnicodeString __fastcall GetHidePropertyNames();

        virtual UnicodeString __fastcall GetTypeResources(UnicodeString propertyName);

        // 返回不被显示的属性名列表

    public:

        __fastcall TBarCode2D();

        __fastcall ~TBarCode2D();

        __fastcall TBarCode2D(TBuildType buildFlag);

        static TCbwObject * Build();

        void __fastcall Initial();

    };

    再辅之以资源配置,OK了。

    使用方法:

    1. 选择插入对象类型为二维码

    1. 在工作区拖动画出目标区域
    2. 在属性浏览器中输入条码内容,如http://finance.qq.com/a/20130905/012251.htm,将生成二维码,
    3. 可以继续修改二维码对象的各个属性,如条码颜色、模块等,以下为条码颜色为红色、模块为3的效果:

    基本方法如此,下面为几个二维码的截图

    才发现,原来常见的二维码都是QrCode类型,其它的类型还多着呢。

    顺便把控件的时间限制给Crack了。

    软件下载地址:http://www.drgraph.com/bbs 进入高拍仪版块即可。

  • 相关阅读:
    Ms.office2010安装教程
    Hadoop开发第3期---Hadoop的伪分布式安装
    Linux随笔---tar命令
    Hadoop开发第2期---虚拟机中搭建Linux
    appium(8)-locator strategies
    appium(7)-Automating mobile gestures
    appium(3)-Running Tests
    appium(4)-Automating mobile web apps
    appium(5)-Appium capabilities
    appium(2)-Setting up Appium
  • 原文地址:https://www.cnblogs.com/drgraph/p/3304264.html
Copyright © 2011-2022 走看看