QRCodeData.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. 
  2. using System;
  3. namespace Dongke.WinForm.Controls.InvoiceLayout.DrawBarcode.QRCode
  4. {
  5. /// <summary>
  6. /// 二维码格式数据
  7. /// </summary>
  8. [Serializable]
  9. public sealed class QRCodeData
  10. {
  11. /// <summary>
  12. /// 获取坐标元素
  13. /// </summary>
  14. public bool this[int x, int y]
  15. {
  16. get => Data[y, x];
  17. set => Data[y, x] = value;
  18. }
  19. /// <summary>
  20. /// 矩阵数组
  21. /// </summary>
  22. public bool[,] Data
  23. {
  24. get;
  25. }
  26. /// <summary>
  27. /// 获取尺寸(像素)
  28. /// </summary>
  29. public int Size { get; } = 0;
  30. /// <summary>
  31. /// 设定宽度
  32. /// </summary>
  33. public int Width
  34. {
  35. get;
  36. internal set;
  37. }
  38. /// <summary>
  39. /// 设定高度
  40. /// </summary>
  41. public int Height
  42. {
  43. get;
  44. internal set;
  45. }
  46. /// <summary>
  47. /// 二维码MaskPattern
  48. /// </summary>
  49. public int MaskPattern
  50. {
  51. get;
  52. internal set;
  53. }
  54. /// <summary>
  55. /// 二维码Mode
  56. /// </summary>
  57. public string ModeName
  58. {
  59. get;
  60. internal set;
  61. }
  62. /// <summary>
  63. /// 二维码版本
  64. /// </summary>
  65. public int Version
  66. {
  67. get;
  68. internal set;
  69. }
  70. /// <summary>
  71. /// 条码内容
  72. /// </summary>
  73. public string Text
  74. {
  75. get;
  76. internal set;
  77. }
  78. /// <summary>
  79. /// 编码参数
  80. /// </summary>
  81. public QRCodeEncodingOptions Options
  82. {
  83. get;
  84. internal set;
  85. }
  86. /// <summary>
  87. /// 二维码数据(矩阵数组)
  88. /// </summary>
  89. /// <param name="size">尺寸</param>
  90. internal QRCodeData(int size)
  91. {
  92. this.Data = new bool[size, size];
  93. this.Size = size;
  94. }
  95. /// <summary>
  96. /// 设置全部值
  97. /// </summary>
  98. /// <param name="value">The value.</param>
  99. public void SetAllValue(bool value)
  100. {
  101. for (int y = 0; y < this.Size; y++)
  102. {
  103. for (int x = 0; x < this.Size; x++)
  104. {
  105. this.Data[y, x] = value;
  106. }
  107. }
  108. }
  109. }
  110. }