生成二维码
在生成一维码的基础上,再做二维码,感觉就是重复劳动而已。
但也有提高。
首先把诸多的类型转化为字符串,通过资源配置方式来设置,这样就减轻了程序的工作。
当然,这个首先是顺便的,因为在实现之前,看了一下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了。
使用方法:
-
选择插入对象类型为二维码
-
在工作区拖动画出目标区域
-
在属性浏览器中输入条码内容,如http://finance.qq.com/a/20130905/012251.htm,将生成二维码,
-
可以继续修改二维码对象的各个属性,如条码颜色、模块等,以下为条码颜色为红色、模块为3的效果:
基本方法如此,下面为几个二维码的截图
才发现,原来常见的二维码都是QrCode类型,其它的类型还多着呢。
顺便把控件的时间限制给Crack了。
软件下载地址:http://www.drgraph.com/bbs 进入高拍仪版块即可。