如何扩展Firework_Simulator:添加自定义烟花类型和特效
2026/6/8 4:17:54
TQRCode组件生成二维码的核心属性配置,TQRCode是 Delphi 中常用的二维码生成组件(多为第三方 / QRCode 库封装),以下逐一解析每个属性的功能、取值规则和实际应用场景:
| 属性名 | 代码赋值 | 功能详解 | 取值 / 注意事项 |
|---|---|---|---|
Eclevel | 1 | 纠错级别(Error Correction Level)决定二维码容忍污损 / 遮挡的能力,级别越高容错越强(但二维码密度越大)。 | 取值 0-4(对应 QRCode 标准的 4 个级别):0 = L 级(7% 容错)1 = M 级(15% 容错,最常用)2 = Q 级(25% 容错)3 = H 级(30% 容错)(注:代码中注释 “0-4” 是组件封装的简化,标准仅 0-3,4 为组件兼容值,等价 3) |
Pxmag | 4 | 像素倍率(Pixel Magnification)/ 模块尺寸QRCode 的最小单元是 “模块(Module)”(黑白小方块),Pxmag表示每个模块占用的像素数。 | 取值为正整数(如 2/4/8):值越大,二维码整体尺寸越大(例:Pxmag=4 → 每个模块 4×4 像素);需根据显示 / 打印需求调整(打印选 4-8,屏幕显示选 2-4)。 |
Version | strtoint(edit1.Text) | 二维码版本号QRCode 分为 1-40 个版本,版本越高可存储的内容越多,二维码尺寸(模块数)越大。 | 取值 1-40:版本 1 = 21×21 模块版本 2 = 25×25 模块...版本 40 = 177×177 模块(组件会自动适配:若内容超版本容量,可能报错 / 自动升级版本) |
SymbolPicture | picBMP | 二维码输出载体指定生成的二维码图像绘制到哪个TPicture对象中(如TImage的Picture属性)。 | 赋值为TPicture/TBitmap实例(如Image1.Picture),生成后可直接显示 / 保存。 |
Match | true | 尺寸匹配 / 自适应强制二维码图像尺寸与SymbolPicture的画布尺寸匹配(拉伸 / 缩放)。 | true:二维码自动缩放至SymbolPicture的尺寸;false:按Pxmag×版本模块数生成原始尺寸,超出画布会被裁剪。 |
Usejis | False | 是否启用 JIS 编码标准针对日文 Shift_JIS 编码的兼容开关,仅生成日文二维码时需开启。 | true:按 JIS X 0510 标准编码(日文专用);false:按国际通用的 QRCode 标准(UTF-8/ANSI),适合中文 / 英文。 |
code | AnsiToUtf8(Code) | 二维码存储的核心内容需编码的文本 / 网址 / 数据(如 “https://xxx.com”、“123456789”)。 | 需与编码格式匹配:AnsiToUtf8(Code):将 ANSI 编码的字符串转为 UTF-8,避免中文乱码;内容长度受Version和Eclevel限制(例:版本 1+M 级可存 25 个数字 / 10 个中文)。 |
BackColor | clwhite | 二维码背景色二维码空白区域的颜色(模块外的底色)。 | 取值为 Delphi 颜色常量(clWhite/clGray)或 RGB 值(RGB(255,255,255)),推荐白色(兼容扫码设备)。 |
SymbolColor | clblack | 二维码模块颜色二维码黑色方块(有效数据区)的颜色。 | 取值为 Delphi 颜色常量,推荐黑色(clBlack),避免浅色系(扫码识别率低)。 |
Angle | 0 | 二维码旋转角度生成的二维码图像旋转角度(顺时针)。 | 取值为 0/90/180/270(部分组件支持任意角度,但非 90 倍数会降低扫码识别率);0 = 无旋转(默认,识别率最高)。 |
若手动设置的版本号无法容纳code内容(比如版本 1 存 50 个中文),组件通常会:
Version设为 0(部分组件支持 “自动适配版本”)。AnsiToUtf8转 UTF-8,且Usejis=False,否则中文乱码;Usejis=True,用 Shift_JIS 编码,节省容量;code即可(QRCode 对数字 / 字母有压缩编码,容量更大)。delphi
var abar: TQRCode; picBMP: TPicture; Code: string; begin // 初始化输出载体 picBMP := TPicture.Create; picBMP.Bitmap := TBitmap.Create; picBMP.Bitmap.Width := 200; // 画布宽度 picBMP.Bitmap.Height := 200; // 画布高度 // 创建二维码组件 abar := TQRCode.Create(nil); try abar.Eclevel := 1; // M级容错(日常首选) abar.Pxmag := 4; // 每个模块4像素,21×21模块→84×84像素(版本1) abar.Version := 5; // 版本5(33×33模块),可存更多内容 abar.SymbolPicture := picBMP; // 二维码绘制到picBMP abar.Match := true; // 自动缩放至200×200画布 abar.Usejis := False; // 中文场景关闭JIS Code := '测试二维码123456'; abar.code := AnsiToUtf8(Code); // 转UTF-8避免中文乱码 abar.BackColor := clWhite; // 白色背景 abar.SymbolColor := clBlack;// 黑色模块 abar.Angle := 0; // 无旋转,扫码最稳定 // 生成二维码(部分组件需手动调用生成方法,如abar.Generate) // 将生成的二维码显示到Image1 Image1.Picture.Assign(picBMP); finally abar.Free; picBMP.Free; end; end;TQRCode的这些属性覆盖了二维码生成的核心维度:容错能力(Eclevel)、尺寸(Version/Pxmag)、内容(code)、样式(颜色 / 旋转)、输出(SymbolPicture)。核心原则是:
code编码正确(UTF-8);