示例#1
0
        private void mnuEncode_Click(object sender, EventArgs e)
        {
            Image orgImg = this.canvasPicture1.Image;

            if (orgImg == null)
            {
                MessageBox.Show(this, "画像を選択してください");
                return;
            }
            int count = 0;

            if (canvasPicture1.Frames.Items.Count == 0)
            {
                Bitmap resultImg = (Bitmap)orgImg;
                BarcodeSDK.QRBarcodeReader QRReader = new BarcodeSDK.QRBarcodeReader();
                var results = QRReader.DecodeMultiple(resultImg);
                foreach (var result in results)
                {
                    if (result.IsSuccess && result.ResultRegion.HasValue)
                    {
                        Rectangle    rect  = result.ResultRegion.Value;
                        BarcodeFrame frame = new BarcodeFrame(result.ResultRegion.Value);
                        if (frame.IsTooSmall)
                        {
                            if (rect.Width < 8)
                            {
                                rect.Inflate(8, 0);
                            }
                            if (rect.Height < 8)
                            {
                                rect.Inflate(0, 8);
                            }
                            frame.Rect = rect;
                        }
                        frame.RawText       = result.RawText;
                        frame.BarcodeFormat = result.BarcodeFormat;
                        frame.CanCreate     = false;
                        this.canvasPicture1.Frames.Items.Add(frame);
                        this.canvasPicture1.Refresh();
                        count++;
                    }
                }
            }
            else
            {
                foreach (BarcodeFrame frame in this.canvasPicture1.Frames.Items)
                {
                    Bitmap resultImg = (Bitmap)orgImg;
                    if (frame.BarcodeImage == null)
                    {
                        BarcodeSDK.QRBarcodeReader QRReader = new BarcodeSDK.QRBarcodeReader();

                        Bitmap cutImg = (Bitmap)CutImage(frame.Rect, resultImg);
                        if (cutImg == null)
                        {
                            continue;
                        }
                        var result = QRReader.Decode(cutImg);
                        if (result.IsSuccess)
                        {
                            frame.RawText       = result.RawText;
                            frame.BarcodeFormat = result.BarcodeFormat;
                            frame.CanCreate     = false;
                            count++;
                        }
                    }
                }
            }
            MessageBox.Show(string.Format("認識完了しました。{0}件認識できました", count));
        }