{"id":257024,"date":"2015-05-12T16:24:03","date_gmt":"2015-05-12T12:24:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=257024"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=257024","title":{"rendered":"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f QR-\u043a\u043e\u0434\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0444\u0430\u0439\u043b\u0430 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438 Tajima DST"},"content":{"rendered":"<br \/>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c QR-\u043a\u043e\u0434\u044b (quick-response) \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0444\u0435\u0440\u0430\u0445. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 QR-\u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0432 \u042f\u043f\u043e\u043d\u0438\u0438 <a href=\"http:\/\/www.qrcode.com\/en\/history\/\">\u041c\u0430\u0441\u0430\u0445\u0438\u0440\u043e \u0425\u0430\u0440\u0430<\/a>. <\/p>\n<p>  \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u00ab\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440\u0430\u00bb \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f QR-\u043a\u043e\u0434\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438 Tajima DST. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0443\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e QR-\u043a\u043e\u0434\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u043b\u0438 \u0432\u0430\u0448\u0438\u0445 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0435\u0441\u0442\u044c \u0432\u044b\u0448\u0438\u0432\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0432\u044b\u0448\u0438\u0432\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: <\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/eab\/9c0\/e2b\/eab9c0e2b0904789a0464c86d8d28b0a.png\"\/><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/h2>\n<p>  \u041d\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u043e\u0439 \u043d\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f QR-\u043a\u043e\u0434\u0430. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0432\u044b\u0448\u0438\u0432\u043a\u0438 QR-\u043a\u043e\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 QR-\u043a\u043e\u0434\u0430 \u0432 \u043b\u044e\u0431\u043e\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c on-line \u0441\u0435\u0440\u0432\u0438\u0441\u0435, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0432 \u0431\u043b\u043e\u043a\u0438 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438. \u0414\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u0434\u0432\u0443\u0445 QR-\u043a\u043e\u0434\u043e\u0432 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c. \u0414\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 QR-\u043a\u043e\u0434\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0443\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<h2>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0421\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e QR-\u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0437\u0430\u0442\u0435\u043c \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u0438\u0434\u0443\u0449\u0438\u0445 \u044f\u0447\u0435\u0435\u043a \u043c\u0430\u0442\u0440\u0438\u0446\u044b. \u0414\u043b\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 QR-\u043a\u043e\u0434\u0430 \u043e\u043f\u043e\u0440\u043d\u044b\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043d\u0430 \u0448\u0435\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/e7d\/2c2\/634\/e7d2c26340c942e2b2d58cae9a524264.png\"\/> <\/p>\n<p>  \u0412\u044b\u0448\u0438\u0432\u043a\u0430 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0432\u044b\u0448\u0438\u0432\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 Brother NV 90E.<br \/>  \u2003  <\/p>\n<h2>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/h2>\n<p>  \u0412\u0445\u043e\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u0432\u0438\u0437\u0438\u0442\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 (VCARD), \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 (GEO). \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 URL.<\/p>\n<p>  \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 VCARD:<\/p>\n<pre><code class=\"dos\">BEGIN:VCARD VERSION:3.0 FN:\u043a.\u043c.\u043d., \u043f\u0440. \u0412\u0430\u0441\u0438\u043b\u0438\u0439 \u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447 \u041a\u0432\u0430\u043a\u0438\u043d N:\u041a\u0432\u0430\u043a\u0438\u043d;\u0412\u0430\u0441\u0438\u043b\u0438\u0439;\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447;\u043f\u0440.,\u043a.\u043c.\u043d. ORG:\u0420\u043e\u0433\u0430 \u0438 \u041a\u043e\u043f\u044b\u0442\u0430 URL:http:\/\/ru.wikipedia.org\/\u0412\u0430\u0441\u044f_\u041a\u0432\u0430\u043a\u0438\u043d EMAIL;TYPE=INTERNET:vasya.kvakin@example.com END:VCARD <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 VCARD <a href=\"https:\/\/ru.wikipedia.org\/wiki\/VCard\" title=\"VCARD\">\u0437\u0434\u0435\u0441\u044c<\/a>. <br \/>  \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u043f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u2014 \u0434\u043e\u043b\u0433\u043e\u0442\u0430, \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0448\u0438\u0440\u043e\u0442\u0430:  <\/p>\n<blockquote><p><code> GEO:30.31616, 59.95015 <\/code>  <\/p><\/blockquote>\n<p>  <\/p>\n<h2>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 C#. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 MessagingToolkit.QRCode, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c QR-\u043a\u043e\u0434 \u043f\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u043c \u0441 <a href=\"https:\/\/www.nuget.org\/packages\/MessagingToolkit.QRCode\/\">nuget.org<\/a> \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432:  <\/p>\n<blockquote><p><code> PM&gt; Install-Package MessagingToolkit.QRCode <\/code>  <\/p><\/blockquote>\n<p>  \u041c\u0430\u0442\u0440\u0438\u0446\u0430 QR-\u043a\u043e\u0434\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 QR-\u043a\u043e\u0434\u0430, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443 \u2013 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u043f\u0438\u0441\u043a\u0430 \u043b\u0438\u043d\u0438\u0439 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043d\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0442\u0435\u0436\u043a\u043e\u0432.<br \/>  \u0411\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043b\u0438\u043d\u0438\u044e \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0434\u0443\u0449\u0438\u0445 \u044f\u0447\u0435\u0435\u043a QR-\u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432. \u041b\u0438\u043d\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u043a \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043f\u043e\u0440\u043d\u044b\u0445 \u0440\u0430\u043c\u043e\u043a QR-\u043a\u043e\u0434\u0430. \u041d\u0430\u0431\u043e\u0440 \u043b\u0438\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u0442\u0435\u0436\u043a\u043e\u0432.<\/p>\n<p>  \u0422\u0440\u0438 \u043e\u043f\u043e\u0440\u043d\u044b\u0445 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0443\u0433\u043b\u0430\u043c QR-code. \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u043d\u0430 6 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439. \u041f\u0435\u0440\u0432\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u2014 \u044d\u0442\u043e \u043b\u0435\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a, \u0441\u0442\u0435\u0436\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0421\u0442\u0435\u0436\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0435\u0433\u043e \u0441\u0442\u043e\u0440\u043e\u043d, \u0430 \u043d\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438 \u043a\u0430\u043a \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0417\u0430\u0442\u0435\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u0442\u0435\u0436\u043a\u0438 \u0434\u043b\u044f \u043b\u0438\u043d\u0438\u0439 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043e\u043f\u043e\u0440\u043d\u044b\u043c\u0438 \u043b\u0435\u0432\u044b\u043c \u0432\u0435\u0440\u0445\u043d\u0438\u043c \u0438 \u043b\u0435\u0432\u044b\u043c \u043d\u0438\u0436\u043d\u0438\u043c \u043e\u043f\u043e\u0440\u043d\u044b\u043c\u0438 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430\u043c\u0438. \u0421\u0442\u0435\u0436\u043a\u0438 \u0434\u043b\u044f \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437. \u0414\u043b\u044f \u0447\u0435\u0442\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0441\u0442\u0435\u0436\u043a\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445. \u0422\u0430\u043a\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043d\u0438\u0442\u0438 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445 \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u2014 \u0441\u0430\u043c\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439. \u041f\u044f\u0442\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u2013 \u043e\u043f\u043e\u0440\u043d\u044b\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443. \u0428\u0435\u0441\u0442\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u2013 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0430\u044f, \u0441\u0442\u0435\u0436\u043a\u0438 \u0434\u043b\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0432 \u043d\u0435\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435: \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437, \u0447\u0451\u0442\u043d\u044b\u0435 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445. <\/p>\n<h6>\u041a\u043b\u0430\u0441\u0441 QRCodeCreator<\/h6>\n<p>  \u041a\u043b\u0430\u0441\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d MessagingToolkit.QRCode.Codec \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b QR-\u043a\u043e\u0434\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0435:<\/p>\n<pre><code class=\"cs\">using System.Text; using MessagingToolkit.QRCode.Codec;  namespace EmbroideryFile.QRCode {     internal class QRCodeCreator     {         public bool[][] GetQRCodeMatrix(string DataToEncode)         {             if (string.IsNullOrEmpty(DataToEncode))   return new bool[1][];             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();             qrCodeEncoder.CharacterSet = &quot;UTF8&quot;;             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;             qrCodeEncoder.QRCodeScale = 1;             qrCodeEncoder.QRCodeVersion = -1;             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;             return qrCodeEncoder.CalQrcode(Encoding.UTF8.GetBytes(DataToEncode));         }     } } <\/code><\/pre>\n<p>  CharacterSet \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c UTF8, \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b.<br \/>  \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0443 QRCodeErrorCorrect \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 QRCodeEncoder.ERROR_CORRECTION.L \u2014 \u043d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.<br \/>  \u0421\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u0438\u0437\u043b\u0438\u0448\u043d\u044f\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430.<br \/>  \u0415\u0441\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b, \u0442\u043e \u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF8.<br \/>  \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 QRCodeStitcher.<br \/>  \u2003  <\/p>\n<h6>\u041a\u043b\u0430\u0441\u0441 QRCodeStitcher<\/h6>\n<p>  \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0432\u0438\u0434\u043e\u0432 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435.\u042d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u044d\u0442\u0430\u043f\u0430\u043c\u0438:  <\/p>\n<ol>\n<li>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 6-\u0442\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439;<\/li>\n<li>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u043b\u0438\u043d\u0438\u0439.<\/li>\n<\/ol>\n<p>  \u0414\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u043f\u043e \u043c\u0430\u0442\u0440\u0438\u0446\u0435 QR-\u043a\u043e\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0438 \u043f\u0440\u0438 \u043f\u0443\u0441\u0442\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043b\u0438\u043d\u0438\u044e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u043f\u043e\u0440\u043d\u044b\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u043a\u0440\u0430\u044f\u043c QR-\u043a\u043e\u0434\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043b\u0438\u043d\u0438\u0438, \u0435\u0451 \u0434\u043b\u0438\u043d\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0439 \u043d\u0438\u0436\u043d\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043b\u0438\u043d\u0438\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u044b QR-\u043a\u043e\u0434\u0430.<\/p>\n<p>  \u041f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0434\u043b\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e \u043e\u0441\u044f\u043c \u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u0430\u0431\u0441\u0446\u0438\u0441\u0441 \u0438\u043c\u0435\u044e\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: dX = 25; dY = 2; \u0420\u0430\u0437\u043c\u0435\u0440 \u044f\u0447\u0435\u0439\u043a\u0438 QR-\u043a\u043e\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d: cellSize = 25 \u0435\u0434\u0438\u043d\u0438\u0446. \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0437\u0434\u0435\u0441\u044c 0.1 \u043c\u043c.<br \/>  \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b: <\/p>\n<pre><code class=\"cs\"> public struct Line {     public Coords Dot1 { get; set; }     public Coords Dot2 { get; set; }     public int Length { get; set; }     public bool Lowest { get; set; }  } <\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0431\u043b\u043e\u043a\u0438 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 6-\u0442\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u0435\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 QR-\u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"cs\">private List&lt;List&lt;Coords&gt;&gt; GenerateQRCodeStitchesBoxed() {  var blocks = new List&lt;List&lt;Coords&gt;&gt;();  int rectSize = GetRectSize();  \/\/ \u043b\u0435\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a  blocks.AddRange(GetRectangleSatin(0, 0, rectSize - 1, rectSize - 1));  \/\/ \u043b\u0435\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442  blocks.Add(GenerateBoxStitchBlock(2, 2, rectSize - 4));  \/\/ \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0445\u043d\u0438\u043c \u0438 \u043d\u0438\u0436\u043d\u0438\u043c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430\u043c\u0438  blocks.AddRange(GetSatinStitches(GetLaneList(0, rectSize + 1, rectSize, _dimension - rectSize - 1)));  \/\/ \u043b\u0435\u0432\u044b\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a  blocks.AddRange(GetRectangleSatin(0, _dimension - rectSize, rectSize - 1, _dimension - 1));  \/\/ \u043b\u0435\u0432\u044b\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442  blocks.Add(GenerateBoxStitchBlock(2, _dimension - rectSize + 2, rectSize - 4));  \/\/ \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c  blocks.AddRange(GetSatinStitches(GetLaneList(rectSize + 1, 0, _dimension - rectSize - 1,  _dimension - 1)));  \/\/ \u043f\u0440\u0430\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a  blocks.AddRange(GetRectangleSatin(_dimension - rectSize, 0, _dimension - 1, rectSize - 1));  \/\/ \u043f\u0440\u0430\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442  blocks.Add(GenerateBoxStitchBlock(_dimension - rectSize + 2, 2, rectSize - 4));  \/\/ \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e\u0434 \u043f\u0440\u0430\u0432\u044b\u043c \u0432\u0435\u0440\u0445\u043d\u0438\u043c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u043c  blocks.AddRange(GetSatinStitches(GetLaneList(_dimension - rectSize, rectSize + 1, _dimension - 1,  _dimension - 1)));  return blocks; } <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 GetRectangleSatin() \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0431\u043b\u043e\u043a\u0438 \u0434\u043b\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043a\u0440\u0430\u0439\u043d\u0438\u0445 \u044f\u0447\u0435\u0435\u043a:<\/p>\n<pre><code class=\"cs\">IEnumerable&lt;List&lt;Coords&gt;&gt; GetRectangleSatin(int x1, int y1, int x2, int y2) {      int LeftX = (x1 &gt; x2) ? x2 : x1;      int TopY = (y1 &gt; y2) ? y2 : y1;      int RightX = (x1 &lt; x2) ? x2 : x1;      var BottomY = (y1 &lt; y2) ? y2 : y1;      int length = RightX - LeftX;      var rect = new List&lt;List&lt;Coords&gt;&gt;();      rect.Add(GenerateVerticalColumnStitchBlock(LeftX, TopY, length));      rect.Add(GenerateHorizonColumnStitchBlock(LeftX, BottomY, length));      rect.Add(ReverseCoords(GenerateVerticalColumnStitchBlock(RightX, TopY + 1, length)));      rect.Add(ReverseCoords(GenerateHorizonColumnStitchBlock(LeftX + 1, TopY, length)));      return rect; } <\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \u043e\u043f\u043e\u0440\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 QR-\u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"cs\">\/\/\/ &lt;summary&gt; \/\/\/ \u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 \/\/\/ &lt;\/summary&gt; \/\/\/ &lt;param name=&quot;cellHorizonPos&quot;&gt;\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 &lt;\/param&gt; \/\/\/ &lt;param name=&quot;cellVerticalPos&quot;&gt;\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430 &lt;\/param&gt; \/\/\/ &lt;param name=&quot;boxSize&quot;&gt;\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430&lt;\/param&gt; \/\/\/ &lt;returns&gt;\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442&lt;\/returns&gt; private List&lt;Coords&gt; GenerateBoxStitchBlock(int cellHorizonPos, int cellVerticalPos, int boxSize) {    var block = new List&lt;Coords&gt;();    int y = 0; int x = 0;    int startX = cellHorizonPos * _cellSize;    int startY = cellVerticalPos * _cellSize;    block.Add(new Coords { X = startX, Y = startY });    while (y &lt; _cellSize * boxSize)    {         while (x &lt; _cellSize * boxSize - _dX)         {            x = x + _dX;            block.Add(new Coords{ X = startX + x, Y = startY + y });         }         x = boxSize * _cellSize;         block.Add(new Coords { X = startX + x, Y = startY + y });         y = y + _dY;         while (x &gt; _dX)         {             x = x - _dX;             block.Add(new Coords { X = startX + x, Y = startY + y });         }         x = 0;         block.Add(new Coords { X = startX + x, Y = startY + y });         y = y + _dY;    }    return block; }  <\/code><\/pre>\n<p>  \u0411\u043b\u043e\u043a\u0438 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0435:<\/p>\n<pre><code class=\"cs\">\/\/\/ &lt;summary&gt; \/\/\/ \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0445 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \/\/\/ &lt;\/summary&gt; private List&lt;List&lt;Coords&gt;&gt; GetSatinStitches(List&lt;Line&gt; lanes) {   List&lt;List&lt;Coords&gt;&gt; blockList = new List&lt;List&lt;Coords&gt;&gt;();   foreach (var lane in lanes)   {                  List&lt;Coords&gt; satin = null;       if (((lane.Length == 1) && ((lane.Dot1.X % 2) == 0)) ||            ((lane.Length &gt; 1) && (lane.Dot2.Y &gt; lane.Dot1.Y)))             satin = GenerateVerticalColumnStitchBlock(lane.Dot1.X, lane.Dot1.Y, lane.Length);        else                                satin = ReverseCoords(GenerateVerticalColumnStitchBlock(lane.Dot2.X, lane.Dot2.Y, lane.Length));               blockList.Add(satin);   }   return blockList; } <\/code><\/pre>\n<p>  \u0421\u043f\u0438\u0441\u043e\u043a \u043b\u0438\u043d\u0438\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 2, 4, 6 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 ConsumeRelativeCellDown() \u0438 ConsumeRelativeCellUp().<\/p>\n<pre><code class=\"cs\">\/\/\/ &lt;summary&gt; \/\/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u043f\u043e \u0443\u0433\u043b\u043e\u0432\u044b\u043c \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u0438  \/\/\/ &lt;\/summary&gt; \/\/\/ &lt;param name=&quot;x1&quot;&gt;X \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438&lt;\/param&gt; \/\/\/ &lt;param name=&quot;y1&quot;&gt;Y \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438&lt;\/param&gt; \/\/\/ &lt;param name=&quot;x2&quot;&gt;X \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438&lt;\/param&gt; \/\/\/ &lt;param name=&quot;y2&quot;&gt;Y \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438&lt;\/param&gt; \/\/\/ &lt;returns&gt;&lt;\/returns&gt; private List&lt;Line&gt; GetLaneList(int x1, int y1, int x2, int y2) {             try             {                 if (_lines != null) _lines.Clear();                 if (y1 &gt; y2)                 {                     _topY = y2;                     _bottomY = y1;                 }                 else                 {                     _topY = y1;                     _bottomY = y2;                 }                 if (x1 &gt; x2)                 {                     _leftX = x2;                     _rightX = x1;                 }                 else                 {                     _leftX = x1;                     _rightX = x2;                 }                 for (int j = _leftX; j &lt;= _rightX; j = j + 2) \/\/X                 {                     _state = false;                     for (int i = _topY; i &lt;= _bottomY; i++) \/\/ Y                                    {                         ConsumeRelativeCellDown(j, i);                     }                     if (j &gt;= _rightX) break;                     _state = false;                     for (int i = _bottomY; i &gt;= _topY; i--) \/\/ Y                                    {                         ConsumeRelativeCellUp(j + 1, i);                     }                 }                 return _lines;             }             catch (Exception ex)             {                 Trace.WriteLine(string.Format(&quot;GetLineList(): {0}&quot;,ex));                 throw;            } } <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 ConsumeRelativeCellDown() \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043b\u0438\u043d\u0438\u0439 \u0434\u043b\u044f \u0447\u0451\u0442\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 QR-\u043a\u043e\u0434\u0430.<\/p>\n<pre><code class=\"cs\">\/\/\/ &lt;summary&gt;  \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u0438\u043d\u0438\u0438 \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u0435 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437  \/\/\/ &lt;\/summary&gt;  \/\/\/ &lt;param name=&quot;j&quot;&gt;&lt;\/param&gt;  \/\/\/ &lt;param name=&quot;i&quot;&gt;&lt;\/param&gt;  void ConsumeRelativeCellDown(int j, int i) {             if (_cells[j][i] == true)             {                 \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u043b\u0438\u043d\u0438\u0438 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438                 if ((i == _topY))                 {                     _dot1 = new Coords() { X = j, Y = i };                                         _curLane.Dot1 = _dot1;                     _laneLen = 1;                     _state = true;                 }                 else if ((_state == false))                 {                     \/\/ \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0432\u043d\u0438\u0437\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u044b                     if (i == _bottomY)                     {                         _dot1 = new Coords() { X = j, Y = i };                         _curLane.Dot1 = _dot1;                         _dot2 = new Coords() { X = j, Y = i };                         _curLane.Dot2 = _dot2;                         _curLane.Length = 1;                         _curLane.Lowest = true;                         _endLaneFlag = true;                     }                     \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u043b\u0438\u043d\u0438\u0438                     else                     {                         _dot1 = new Coords() { X = j, Y = i };                                                 _curLane.Dot1 = _dot1;                         _laneLen = 1;                         _state = true;                     }                 }                 else if ((i == _bottomY))                 {                     \/\/   \u043a\u043e\u043d\u0435\u0446 \u043b\u0438\u043d\u0438\u0438 \u0432\u043d\u0438\u0437\u0443                     _dot2 = new Coords() { X = j, Y = i };                     _curLane.Dot2 = _dot2;                     _curLane.Length = ++_laneLen;                     _curLane.Lowest = true;                     _endLaneFlag = true;                 }  \/\/ \u043b\u0438\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f                 else                 {                     _laneLen++;                 }             }             \/\/ \u043a\u043e\u043d\u0435\u0446 \u043b\u0438\u043d\u0438\u0438, \u043d\u0435 \u043a\u0440\u0430\u0439\u043d\u044f\u044f \u044f\u0447\u0435\u0439\u043a\u0430             else if (_state == true)             {                 _dot2 = new Coords() { X = j, Y = i - 1 };                 _curLane.Dot2 = _dot2;                 _curLane.Length = _laneLen;                 _state = false;                 _endLaneFlag = true;             }             if (_endLaneFlag == true)             {                 _lines.Add(_curLane);                 _endLaneFlag = false;             } } <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 ConsumeRelativeCellUp() \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043b\u0438\u043d\u0438\u0439 \u0434\u043b\u044f \u043d\u0435\u0447\u0451\u0442\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 QR-\u043a\u043e\u0434\u0430.<\/p>\n<pre><code class=\"cs\">void ConsumeRelativeCellUp(int j, int i) {             if (_cells[j][i] == true)             {                 \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u043b\u0438\u043d\u0438\u0438 \u0432\u043d\u0438\u0437\u0443                 if ((i == _bottomY))                 {                      _dot1 = new Coords { X = j, Y = i };                     _curLane.Dot1 = _dot1;                     _laneLen = 1;                     _state = true;                 }                 else if ((_state == false))                 {                     \/\/ \u043e\u0434\u0438\u043d\u043e\u043a\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430                     if (i == _topY)                     {                         _dot1 = new Coords { X = j, Y = i };                         _curLane.Dot1 = _dot1;                         _dot2 = new Coords { X = j, Y = i };                         _curLane.Dot2 = _dot2;                         _curLane.Length = 1;                         _curLane.Lowest = true;                         _endLaneFlag = true;                     }                     \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u043b\u0438\u043d\u0438\u0438                     else                     {                         _dot1 = new Coords { X = j, Y = i };                         _curLane.Dot1 = _dot1;                         _laneLen = 1;                         _state = true;                     }                 }                 else if ((i == _topY))                 {                     \/\/   end of lane at the top                     _dot2 = new Coords { X = j, Y = i };                     _curLane.Dot2 = _dot2;                     _curLane.Length = ++_laneLen;                     _curLane.Lowest = true;                     _endLaneFlag = true;                 }  \/\/ \u043b\u0438\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f                 else                 {                     _laneLen++;                 }             }             \/\/ \u043a\u043e\u043d\u0435\u0446 \u043b\u0438\u043d\u0438\u0438, \u043d\u0435 \u043a\u0440\u0430\u0439\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430             else if (_state)             {                 _dot2 = new Coords { X = j, Y = i + 1 };                 _curLane.Dot2 = _dot2;                 _curLane.Length = _laneLen;                 _state = false;                 _endLaneFlag = true;             }             if (_endLaneFlag)             {                 _lines.Add(_curLane);                 _endLaneFlag = false;             }  } <\/code><\/pre>\n<p>  \u0427\u0451\u0442\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0432\u044b\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437, \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0435 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0441\u0442\u0435\u0436\u043a\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0438\u0442\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u044f\u0447\u0435\u0435\u043a QR-\u043a\u043e\u0434\u0430. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0432 \u043b\u0438\u043d\u0438\u044e:<\/p>\n<pre><code class=\"cs\">\/\/\/ &lt;summary&gt;         \/\/\/ \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0438\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438         \/\/\/ &lt;\/summary&gt;         \/\/\/ &lt;param name=&quot;cellHorizonPos&quot;&gt;\u0430\u0431\u0441\u0446\u0438\u0441\u0441\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0438 \u043b\u0438\u043d\u0438\u0438&lt;\/param&gt;         \/\/\/ &lt;param name=&quot;cellVerticalPos&quot;&gt;\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 &lt;\/param&gt;         \/\/\/ &lt;param name=&quot;length&quot;&gt;&lt;\/param&gt;         private List&lt;Coords&gt; GenerateVerticalColumnStitchBlock(int cellHorizonPos, int cellVerticalPos, int length)         {             var block = new List&lt;Coords&gt;();             int curX, curY;             int columnLength = _cellSize * length;             int startX = cellHorizonPos * _cellSize;             int startY = cellVerticalPos * _cellSize;             block.Add(new Coords { X = startX + _cellSize, Y = startY });             for (curY = 0; curY &lt; columnLength; curY = curY + _dY)             {                 for (curX = (curY == 0) ? 0 : _dX; (curX &lt; _cellSize) && (curY &lt; columnLength); curX = curX + _dX)                 {                     block.Add(new Coords { X = startX + curX, Y = startY + curY });                     curY = curY + _dY;                 }                 int edgedX = _cellSize - (curX - _dX);                 int edgedY = edgedX * _dY \/ _dX;                 curX = _cellSize;                 curY = curY + edgedY - _dY;                 block.Add(new Coords { X = startX + curX, Y = startY + curY });                 curY = curY + _dY;                 for (curX = _cellSize - _dX; (curX &gt; 0) && (curY &lt; columnLength); curX = curX - _dX)                 {                     block.Add(new Coords { X = startX + curX, Y = startY + curY });                     curY = curY + _dY;                 }                 edgedX = curX + _dX;                 edgedY = edgedX * _dY \/ _dX;                 curY = curY + edgedY - _dY;                 block.Add(new Coords { X = startX, Y = startY + curY });             }             curX = _cellSize;             curY = columnLength;             block.Add(new Coords { X = startX + curX, Y = startY + curY });             return block;         } <\/code><\/pre>\n<p>  <\/p>\n<h6>\u041a\u043b\u0430\u0441\u0441 QrcodeDst<\/h6>\n<p>  \u0412 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 DstFile \u0438 QrCodeStitcher.<\/p>\n<pre><code class=\"cs\">public QrcodeDst()  {       _dst = new DstFile();       _stitchGen = new QrCodeStitcher();  }  <\/code><\/pre>\n<p>  \u041a\u043b\u0430\u0441\u0441 \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:<\/p>\n<pre><code class=\"cs\">public QRCodeStitchInfo QrStitchInfo {    set { _stitchGen.Info = value; } } <\/code><\/pre>\n<p>  \u0412 \u043a\u043b\u0430\u0441\u0441\u0435 QrcodeDst \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 FillStreamWithDst(Stream stream) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 QR-\u043a\u043e\u0434\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438 Tajima DST.\u041c\u0435\u0442\u043e\u0434 GetQRCodeStitchBlocks() \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0448\u0438\u0432\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u0435\u0436\u043e\u043a \u0441\u0442\u0435\u0436\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e QrStitchInfo \u043a\u043b\u0430\u0441\u0441\u0430 QrcodeDst \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b QR-\u043a\u043e\u0434\u0430. <\/p>\n<p>  \u041c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 DstFile WriteStitchesToDstStream() \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 Stream \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043d\u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 QrcodeDst \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 QR-\u043a\u043e\u0434\u0430 \u0432 \u0444\u0430\u0439\u043b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438: <\/p>\n<pre><code class=\"cs\">var  qrcodeGen = new QrcodeDst();  using (var inputStreamReader = new StreamReader(fileName)) {     var text = inputStreamReader.ReadToEnd();     using (Stream outStream = new FileStream(outputPath, FileMode.Create, FileAccess.Write))     {       if (qrcodeGen != null)       {           qrcodeGen.QrStitchInfo = new QRCodeStitchInfo {QrCodeText = text};           qrcodeGen.FillStream(outStream);       }     } } <\/code><\/pre>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0448\u0438\u0432\u043a\u0438 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u0435.<\/p>\n<h2>\u0424\u043e\u0440\u043c\u0430\u0442 DST \u0444\u0430\u0439\u043b\u0430<\/h2>\n<p>  \u0414\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0432 \u0431\u0430\u0439\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 DST \u0444\u0430\u0439\u043b\u0430 <a href=\"http:\/\/www.achatina.de\/sewing\/main\/TECHNICL.HTM\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u0442\u0435\u0436\u043a\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0438\u0442\u0438, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u0430 \u0441\u0442\u0435\u0436\u043a\u0430.<\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0442\u0435\u0436\u043a\u043e\u0432:<br \/>  \u2022 \u041e\u0431\u044b\u0447\u043d\u044b\u0439<br \/>  \u2022 \u041f\u0435\u0440\u0435\u0445\u043e\u0434<br \/>  \u2022 \u041e\u0441\u0442\u0430\u043d\u043e\u0432<\/p>\n<p>  \u0421\u0442\u0435\u0436\u043e\u043a \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<br \/>  DST \u0444\u0430\u0439\u043b \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0435\u0436\u043a\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 512-\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u0440\u0438 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0430\u0439\u0442\u043e\u0432 <br \/>  \u0441 \u043d\u0443\u043b\u044f.<br \/>  \u0421\u0442\u0435\u0436\u043e\u043a \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u043c\u044f \u0431\u0430\u0439\u0442\u0430\u043c\u0438:<\/p>\n<table>\n<tr>\n<td>\u041d\u043e\u043c\u0435\u0440 \u0431\u0438\u0442\u0430<\/td>\n<td>7<\/td>\n<td>6<\/td>\n<td>5<\/td>\n<td>4<\/td>\n<td>3<\/td>\n<td>2<\/td>\n<td>1<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>\u0411\u0430\u0439\u0442 1<\/td>\n<td>y+1<\/td>\n<td>y-1<\/td>\n<td>y+9<\/td>\n<td>y-9<\/td>\n<td>x-9<\/td>\n<td>x+9<\/td>\n<td>x-1<\/td>\n<td>x+1<\/td>\n<\/tr>\n<tr>\n<td>\u0411\u0430\u0439\u0442 2<\/td>\n<td>y+3<\/td>\n<td>y-3<\/td>\n<td>y+27<\/td>\n<td>y-27<\/td>\n<td>x-27<\/td>\n<td>x+27<\/td>\n<td>x-3<\/td>\n<td>x+3<\/td>\n<\/tr>\n<tr>\n<td>\u0411\u0430\u0439\u0442 3<\/td>\n<td>\u043f\u0435\u0440\u0435\u0445\u043e\u0434<\/td>\n<td>\u043e\u0441\u0442\u0430\u043d\u043e\u0432<\/td>\n<td>y+81<\/td>\n<td>y-81<\/td>\n<td>x-81<\/td>\n<td>x+81<\/td>\n<td>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432\u0441\u0435\u0433\u0434\u0430<\/td>\n<td>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432\u0441\u0435\u0433\u0434\u0430<\/td>\n<\/tr>\n<\/table>\n<p>  \u0411\u0438\u0442\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438 \u0434\u043b\u0438\u043d\u043d\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u043c\u0435\u043d\u0435 \u043d\u0438\u0442\u0438.<br \/>  DST \u0444\u0430\u0439\u043b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0440\u0435\u043c\u044f \u0431\u0430\u0439\u0442\u0430\u043c\u0438: 00 00 F3.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u0431\u0430\u0439\u0442\u044b \u0441\u0442\u0435\u0436\u043a\u0430 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0438\u0442\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cs\">  byte[] encode_record(int x, int y, DstStitchType stitchType)         {             byte b0, b1, b2;             b0 = b1 = b2 = 0;             byte[] b = new byte[3];             \/\/ \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e &gt;+121 or &lt; -121.             if (x &gt;= +41) { b2 += setbit(2); x -= 81; };             if (x &lt;= -41) { b2 += setbit(3); x += 81; };             if (x &gt;= +14) { b1 += setbit(2); x -= 27; };             if (x &lt;= -14) { b1 += setbit(3); x += 27; };             if (x &gt;= +5) { b0 += setbit(2); x -= 9; };             if (x &lt;= -5) { b0 += setbit(3); x += 9; };             if (x &gt;= +2) { b1 += setbit(0); x -= 3; };             if (x &lt;= -2) { b1 += setbit(1); x += 3; };             if (x &gt;= +1) { b0 += setbit(0); x -= 1; };             if (x &lt;= -1) { b0 += setbit(1); x += 1; };             if (x != 0)             {                throw;             };             if (y &gt;= +41) { b2 += setbit(5); y -= 81; };             if (y &lt;= -41) { b2 += setbit(4); y += 81; };             if (y &gt;= +14) { b1 += setbit(5); y -= 27; };             if (y &lt;= -14) { b1 += setbit(4); y += 27; };             if (y &gt;= +5) { b0 += setbit(5); y -= 9; };             if (y &lt;= -5) { b0 += setbit(4); y += 9; };             if (y &gt;= +2) { b1 += setbit(7); y -= 3; };             if (y &lt;= -2) { b1 += setbit(6); y += 3; };             if (y &gt;= +1) { b0 += setbit(7); y -= 1; };             if (y &lt;= -1) { b0 += setbit(6); y += 1; };             if (y != 0)             {                throw;             };             switch (stitchType)             {                 case DstStitchType.NORMAL:                     b2 += (byte)3;                     break;                 case DstStitchType.END:                     b2 = (byte)243;                     b0 = b1 = (byte)0;                     break;                 case DstStitchType.JUMP:                     b2 += (byte)131;                     break;                 case DstStitchType.STOP:                     b2 += (byte)195;                     break;                 default:                     b2 += 3;                     break;             };             b[0] = b0; b[1] = b1; b[2] = b2;             return b;         } <\/code><\/pre>\n<p>  \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438 QR-\u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e <a href=\"http:\/\/mandrykin.spb.ru\/qrcode\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>  <a href=\"http:\/\/mandrykin.spb.ru\/qrcode\"><img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/b17\/f69\/53f\/b17f6953f61a4cef9ca3b63300e2b7a3.PNG\" alt=\"QR-code geolocation\"\/><\/a><\/p>\n<p>  \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438 QR-\u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e <a href=\"https:\/\/drive.google.com\/uc?export=download&amp;id=0BzNljve6KtsmYWpkSERHbm80aDg\">\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0444\u0430\u0439\u043b \u0432\u044b\u0448\u0438\u0432\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e <a href=\"https:\/\/drive.google.com\/uc?export=download&amp;id=0BzNljve6KtsmQ1RKcFRwMThpN1E\" title=\"qrCodeGen\">\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>  \u0412 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:  <\/p>\n<blockquote><p><code> qrcodegen.exe test.asc <\/code>  <\/p><\/blockquote>\n<p>  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .DST \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 SVG \u0438 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 PNG. \u0424\u0430\u0439\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"http:\/\/florianisoftware.com\">http:\/\/florianisoftware.com<\/a>.<\/p>\n<h4>\u0421\u0441\u044b\u043b\u043a\u0438 \u043f\u043e \u0442\u0435\u043c\u0435<\/h4>\n<p>  \u2022 <a href=\"http:\/\/www.njcrawford.com\/programs\/embroidery-reader\/\">Site of Nathan Crawford<\/a> \u2013 \u041a\u043e\u0434 \u0441 \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u0430 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PNG \u0444\u0430\u0439\u043b\u0430 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438.<br \/>  \u2022 <a href=\"http:\/\/www.achatina.de\/sewing\/main\/TECHNICL.HTM\">Rudolf\u00b4s Homepage<\/a> \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 Taijama DST <br \/>  \u2022 <a href=\"http:\/\/embroidermodder.org\/\">Embroidermodder site<\/a> \u2014 Embroidermodder \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0438\u0437\u0430\u0439\u043d\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438             <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/257763\/\"> http:\/\/habrahabr.ru\/post\/257763\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<br \/>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c QR-\u043a\u043e\u0434\u044b (quick-response) \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0444\u0435\u0440\u0430\u0445. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 QR-\u043a\u043e\u0434\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0432 \u042f\u043f\u043e\u043d\u0438\u0438 <a href=\"http:\/\/www.qrcode.com\/en\/history\/\">\u041c\u0430\u0441\u0430\u0445\u0438\u0440\u043e \u0425\u0430\u0440\u0430<\/a>. <\/p>\n<p>  \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u00ab\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440\u0430\u00bb \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f QR-\u043a\u043e\u0434\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438 Tajima DST. \u0414\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0443\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e QR-\u043a\u043e\u0434\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u0434\u0438\u0437\u0430\u0439\u043d \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0438\u0432\u043a\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u043b\u0438 \u0432\u0430\u0448\u0438\u0445 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0435\u0441\u0442\u044c \u0432\u044b\u0448\u0438\u0432\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0432\u044b\u0448\u0438\u0432\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: <\/p>\n<p>  <img decoding=\"async\" src=\"\/\/habrastorage.org\/files\/eab\/9c0\/e2b\/eab9c0e2b0904789a0464c86d8d28b0a.png\"\/>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-257024","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/257024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=257024"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/257024\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=257024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=257024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=257024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}