Beispiel #1
0
        public async static Task <Uri> ToQrDataUri(this ISdp sdp, int width, int height)
        {
            var qrCodeWriter = new QRCodeWriter();
            var bitMatrix    = qrCodeWriter.encode(sdp.ToString(), ZXing.BarcodeFormat.QR_CODE, width, height);

            using (var canvasRenderTarget = new CanvasRenderTarget(CanvasDevice.GetSharedDevice(), 500, 500, 96))
            {
                using (var drawingSession = canvasRenderTarget.CreateDrawingSession())
                {
                    for (var y = 0; y < height; y++)
                    {
                        for (var x = 0; x < width; x++)
                        {
                            drawingSession.DrawRectangle(x, y, 1, 1, bitMatrix.get(x, y) ? Color.FromArgb(0, 0, 0, 0) : Color.FromArgb(255, 255, 255, 255));
                        }
                    }
                }

                using (var inMemoryRandomAccessStream = new InMemoryRandomAccessStream())
                {
                    await canvasRenderTarget.SaveAsync(inMemoryRandomAccessStream, CanvasBitmapFileFormat.Png);

                    inMemoryRandomAccessStream.Seek(0);
                    var buffer = new byte[inMemoryRandomAccessStream.Size];
                    await inMemoryRandomAccessStream.ReadAsync(buffer.AsBuffer(), (uint)inMemoryRandomAccessStream.Size, InputStreamOptions.None);

                    return(new Uri($"data:image/png;base64,{Convert.ToBase64String(buffer)}"));
                }
            }
        }
Beispiel #2
0
 public void Visit(ISdp sdp)
 {
     sdp.Visit(0, _member_name_[0], false, ref iValue);
     sdp.Visit(1, _member_name_[1], false, ref strValue);
     sdp.Visit(2, _member_name_[2], false, Values);
     sdp.Visit(233, _member_name_[3], false, KeyValues);
 }
Beispiel #3
0
        public static ImageSource ToQrImageSource(this ISdp sdp, int width, int height)
        {
            var qrCodeWriter = new QRCodeWriter();
            var bitMatrix    = qrCodeWriter.encode(sdp.ToString(), ZXing.BarcodeFormat.QR_CODE, width, height);

            var canvasImageSource = new CanvasImageSource(CanvasDevice.GetSharedDevice(), width, height, 96);

            using (var drawingSession = canvasImageSource.CreateDrawingSession(Color.FromArgb(255, 255, 255, 255)))
            {
                for (var y = 0; y < height; y++)
                {
                    for (var x = 0; x < width; x++)
                    {
                        if (bitMatrix.get(x, y))
                        {
                            drawingSession.DrawRectangle(x, y, 1, 1, Color.FromArgb(255, 0, 0, 0));
                        }
                    }
                }
            }

            return(canvasImageSource);
        }