@@ -86,40 +86,39 @@ public string GetGraphic(bool drawQuietZones = true, bool invert = false, string
86
86
} ;
87
87
88
88
var moduleData = QrCodeData . ModuleMatrix ;
89
- var lineBuilder = new StringBuilder ( ) ;
89
+ var sbSize = ( moduleData . Count + endOfLine . Length ) * ( int ) Math . Ceiling ( moduleData . Count / 2.0 ) - 1 ;
90
+ var lineBuilder = new StringBuilder ( sbSize ) ;
90
91
91
92
var quietZonesModifier = ( drawQuietZones ? 0 : 8 ) ;
92
93
var quietZonesOffset = ( int ) ( quietZonesModifier * 0.5 ) ;
93
- var sideLength = ( QrCodeData . ModuleMatrix . Count - quietZonesModifier ) ;
94
+ var sideLength = ( moduleData . Count - quietZonesModifier ) ;
94
95
95
96
for ( var row = 0 ; row < sideLength ; row += 2 )
96
97
{
97
98
for ( var col = 0 ; col < sideLength ; col ++ )
98
99
{
99
- try
100
- {
101
- var current = moduleData [ col + quietZonesOffset ] [ row + quietZonesOffset ] ^ invert ;
102
- var nextRowId = row + quietZonesOffset + 1 ;
100
+ var current = moduleData [ col + quietZonesOffset ] [ row + quietZonesOffset ] ^ invert ;
101
+ var nextRowId = row + quietZonesOffset + 1 ;
103
102
104
- // Set next to whitespace "color"
105
- var next = false ^ invert ;
106
- // Fill next with value, if in data range
107
- if ( nextRowId < QrCodeData . ModuleMatrix . Count )
108
- next = moduleData [ col + quietZonesOffset ] [ nextRowId ] ^ invert ;
103
+ // Set next to whitespace "color"
104
+ var next = BLACK ;
105
+ // Fill next with value, if in data range
106
+ if ( nextRowId < QrCodeData . ModuleMatrix . Count )
107
+ next = moduleData [ col + quietZonesOffset ] [ nextRowId ] ^ invert ;
109
108
110
- if ( current == WHITE && next == WHITE )
111
- lineBuilder . Append ( palette . WHITE_ALL ) ;
112
- else if ( current == WHITE && next == BLACK )
113
- lineBuilder . Append ( palette . WHITE_BLACK ) ;
114
- else if ( current == BLACK && next == WHITE )
115
- lineBuilder . Append ( palette . BLACK_WHITE ) ;
116
- else
117
- lineBuilder . Append ( palette . BLACK_ALL ) ;
118
- }
109
+ if ( current == WHITE && next == WHITE )
110
+ lineBuilder . Append ( palette . WHITE_ALL ) ;
111
+ else if ( current == WHITE && next == BLACK )
112
+ lineBuilder . Append ( palette . WHITE_BLACK ) ;
113
+ else if ( current == BLACK && next == WHITE )
114
+ lineBuilder . Append ( palette . BLACK_WHITE ) ;
115
+ else
116
+ lineBuilder . Append ( palette . BLACK_ALL ) ;
119
117
}
120
- lineBuilder . Append ( endOfLine ) ;
118
+ if ( row + 2 < sideLength )
119
+ lineBuilder . Append ( endOfLine ) ;
121
120
}
122
- return lineBuilder . ToString ( ) . Trim ( endOfLine . ToCharArray ( ) ) ;
121
+ return lineBuilder . ToString ( ) ;
123
122
}
124
123
}
125
124
@@ -133,5 +132,13 @@ public static string GetQRCode(string plainText, int pixelsPerModule, string dar
133
132
using ( var qrCode = new AsciiQRCode ( qrCodeData ) )
134
133
return qrCode . GetGraphic ( pixelsPerModule , darkColorString , whiteSpaceString , drawQuietZones , endOfLine ) ;
135
134
}
135
+
136
+ public static string GetQRCode ( string plainText , ECCLevel eccLevel , bool forceUtf8 = false , bool utf8BOM = false , EciMode eciMode = EciMode . Default , int requestedVersion = - 1 , string endOfLine = "\n " , bool drawQuietZones = true , bool invert = true )
137
+ {
138
+ using ( var qrGenerator = new QRCodeGenerator ( ) )
139
+ using ( var qrCodeData = qrGenerator . CreateQrCode ( plainText , eccLevel , forceUtf8 , utf8BOM , eciMode , requestedVersion ) )
140
+ using ( var qrCode = new AsciiQRCode ( qrCodeData ) )
141
+ return qrCode . GetGraphic ( drawQuietZones , invert , endOfLine ) ;
142
+ }
136
143
}
137
144
}
0 commit comments