예제 #1
0
        private void Generate()
        {
            try
            {
                var qrcode = new QRCode(new Options(Text));
                qrcode.Make();
                var c      = qrcode.GetModuleCount();
                var bitmap = new bool[c][];

                for (var row = 0; row < c; row++)
                {
                    bitmap[row] = new bool[c];

                    for (var col = 0; col < c; col++)
                    {
                        var isDark = qrcode.IsDark(row, col);
                        bitmap[row][col] = isDark;
                    }
                }

                Bitmap = bitmap;
            }
            catch (Exception ex)
            {
                Text   = "Sorry, an error: " + ex.Message;
                Bitmap = null;
            }
        }
예제 #2
0
        private void Generate()
        {
            try
            {
                var qrcode = new QRCode(new Options(Text));
                qrcode.Make();
                var c = qrcode.GetModuleCount();
                var bitmap = new bool[c][];

                for (var row = 0; row < c; row++)
                {
                    bitmap[row] = new bool[c];

                    for (var col = 0; col < c; col++)
                    {
                        var isDark = qrcode.IsDark(row, col);
                        bitmap[row][col] = isDark;
                    }
                }

                Bitmap = bitmap;
            }
            catch (Exception ex)
            {
                Text = "Sorry, an error: " + ex.Message;
                Bitmap = null;
            }
        }
예제 #3
0
        //called when data for any output pin is requested
        public void Evaluate(int SpreadMax)
        {
            FOutput.SliceCount = SpreadMax;
            FSize.SliceCount   = SpreadMax;
            FError.SliceCount  = SpreadMax;

            for (int i = 0; i < SpreadMax; i++)
            {
                if (FGen[i])
                {
                    FError[i] = "";
                    try
                    {
                        QRCode4CS.Options options = new QRCode4CS.Options(FInput[i]);
                        options.TypeNumber   = FTypeN[i];
                        options.CorrectLevel = FErrorC[i];
                        QRCode qrcode = new QRCode(options);
                        qrcode.Make();
                        int mcount = qrcode.GetModuleCount();
                        FOutput[i].SliceCount = mcount * mcount;

                        for (int row = 0; row < mcount; row++)
                        {
                            for (int col = 0; col < mcount; col++)
                            {
                                bool isDark = qrcode.IsDark(row, col);
                                FOutput[i][row * mcount + col] = isDark;
                            }
                        }
                        FSize[i] = mcount;
                    }
                    catch (Exception e)
                    {
                        FSize[i] = 0;
                        FOutput[i].SliceCount = 0;
                        FError[i]             = e.Message;
                    }
                }
            }

            //FLogger.Log(LogType.Debug, "hi TTY");
        }
예제 #4
0
        private void Draw()
        {
            int typeNumber;
            if (_text.Length < 26)
                typeNumber = 2;
            else if (_text.Length < 72)
                typeNumber = 5;
            else if (_text.Length < 125)
                typeNumber = 7;
            else if (_text.Length < 203)
                typeNumber = 10;
            else if (_text.Length < 298)
                typeNumber = 12;
            else if (_text.Length < 407)
                typeNumber = 15;
            else if (_text.Length < 534)
                typeNumber = 17;
            else if (_text.Length < 669)
                typeNumber = 20;
            else
            {
                Close();
                return;
            }

            QRCode qr;
            try
            {
                qr = new QRCode(typeNumber, QRErrorCorrectLevel.M);
                qr.AddData(_text);
                qr.Make();
            }
            catch (Exception)
            {
                Close();
                return;
            }

            var c = qr.GetModuleCount();
            var b = new Bitmap(c, c);

            for (var row = 0; row < c; row++)
            {
                for (var col = 0; col < c; col++)
                {
                    var isDark = qr.IsDark(row, col);
                    b.SetPixel(row, col, isDark ? _darkColour : _backColour);
                }
            }

            var newImage = new Bitmap(_size, _size, PixelFormat.Format24bppRgb);
            var g = Graphics.FromImage(newImage);
            g.InterpolationMode = InterpolationMode.NearestNeighbor;
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.SmoothingMode = SmoothingMode.None;
            if (_border)
            {
                g.DrawImage(b, _borderWidth, _borderWidth, _size - _borderWidth * 2, _size - _borderWidth * 2);
                RectangleF[] r = {new RectangleF(0, 0, _size, _borderWidth), // Top
                    new RectangleF(0, 0, _borderWidth, _size), // Left
                    new RectangleF(_size - _borderWidth, 0, _borderWidth, _size), // Right
                    new RectangleF(0, _size - _borderWidth, _size, _borderWidth)}; // Bottom
                g.DrawRectangles(new Pen(_borderColour, _borderWidth), r);
            }
            else
                g.DrawImage(b, 0, 0, _size, _size);
            panel1.BackgroundImage = newImage;
        }