
هناك مكتبة
ZXing شعبية لإخراج / قراءة الباركود. يمكنه إخراج وقراءة العديد من التنسيقات المختلفة: QRCode و Aztec وغيرها ، أكثر من 2 دزينة. لرموز القراءة ، لديها تحكم جاهز ZXingScannerView. مطلوب حد أدنى من الكود لإضافة هذه الوظيفة إلى تطبيقك.
ومع ذلك ، باستخدام هذه المكتبة ، سيتم عرض الرمز بشكل قانوني ، بالأبيض والأسود. ضع في اعتبارك الحالة التي تحتاج فيها لتصوير رمز ذي مظهر مخصص ، على سبيل المثال ، ملون ، بعناصر مدورة أو مزينة بطريقة أخرى (وبحيث يستمر قراءتها جيدًا).
وتفتح الحرية الحقيقية للإبداع فقط إذا قمت برسم الكود بنفسك - فكل شيء في يديك تمامًا. هذا هو ما سنفعله مع مثال رمز الاستجابة السريعة.
التطبيق النهائي هو هنا .تطبق هذه المقالة خوارزمية مأخوذة من المقالة:
تتأثر خوارزمية إنشاء رمز الاستجابة السريعة ، الرسم باستخدام مكتبة
SkiaSharp ، ويتم إعطاء مثال على تطبيق منشئ رمز الاستجابة السريعة مع بعض العناصر الزخرفية - تسليط الضوء على خطوط التنعيم والخلفية من ملف png.
تفسيرات للتنفيذ
لنبدأ بإنشاء تطبيق Xamarin.Forms فارغ. قم بإنشاء مشروع جديد في Visual Studio مثل "Mobile App (Xamarin.Forms)" ، ثم حدد القالب "فارغ". في قسم "المنصات" ، حدد أي ، يعمل SkiaSharp على العديد من المنصات ، بما في ذلك نظامي Android و iOS.
يتم ترك مشاريع Android و. iOS بدون تغيير ، لدينا تنفيذ عبر الأنظمة الأساسية.
في مشروع عبر النظام الأساسي:
تمت إضافة صورتين للخلفية - واحدة للصفحة بأكملها ، والآخر لكود QR. يرجى ملاحظة أن لديهم "Build Action" "مورد مضمن".
الإخراج موجود في الملفات MainPage.xaml و MainPage.xaml.cs
فئة ImageResourceExtension لاستخدام الصور من الموارد في xaml.
كل المنطق في مشروع QRCodeEncoder. وهي مقسمة بين الطبقات:
- التشفير - تشفير سلسلة البيانات في سلسلة من الأصفار والأصفار
- Renderer - ضع صفيف البيانات الناتج بشكل صحيح ، وأضف المعلومات العامة وأعد ملف png إلى Stream
تحتوي خوارزمية إنشاء كود QR على العديد من الكتب المرجعية التي تحتوي على أرقام. ماذا يعني كل منهم ، راجع مقالة "QR Code Generation Algorithm" (انظر أعلاه).
لم يتم تنفيذ ترميز كانجي (للأحرف) في التطبيق.
SkiaSharp
SkiaSharp عبارة عن مكتبة رسم ثنائية الأبعاد مشتركة على .NET. يعتمد على
مكتبة Skia Graphics Library من Google. متاح كحزمة NuGet:
nuget install SkiaSharp
وثائق مايكروسوفت:
SkiaSharp في Xamarin.Formsتتم جميع عمليات الرسم في طريقة الرسم لفئة Renderer. على سبيل المثال ، يتم إجراء بعض العناصر مستديرة ، بعضها مربعة:
canvas.DrawCircle() canvas.DrawRect()
يتم تسليط الضوء على بعض:
var paint1 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.DeepSkyBlue }; var paint2 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.Red }; var paint3 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.Gold };
ويوضح كيفية تسهيل الانتقال بين العناصر المجاورة.
أمثلة
وأخيرًا ، أمثلة لبعض رموز QR المثيرة للاهتمام من الإنترنت:





