【问题标题】:Reading QR Code & BarCode in windows phone 8在 windows phone 8 中读取二维码和条形码
【发布时间】:2015-06-03 06:23:01
【问题描述】:

我正在开发 windows phone 8 应用程序..我的要求是扫描二维码和条形码并获取嵌入其中的值..

我对 Zxing 库做了很多尝试。 请为我提供合适的解决方案

【问题讨论】:

    标签: c# windows-phone-8 barcode zxing qr-code


    【解决方案1】:

    终于..我实现了这个方法..

    在您的示例中包含以下命名空间

    xmlns:jwqr="clr-namespace:JeffWilcox.Controls;assembly=JeffWilcox.Controls.QR"
    

    在 XAml 文件中.. 包括以下控件

    <jwqr:QRCodeScanner
    ScanComplete="QRCodeScanner_ScanComplete"
    Error="QRCodeScanner_Error"
    Width="400"
    Height="400"/>
    

    在代码行为中..包括事件处理程序。

    private void QRCodeScanner_ScanComplete(object sender, JeffWilcox.Controls.ScanCompleteEventArgs e)
    {
    ApplicationTitle.Text = e.Result;
    }
    
    private void QRCodeScanner_Error(object sender, JeffWilcox.Controls.ScanFailureEventArgs e)
    {
    throw e.Exception;
    }
    

    供完整参考.. click here

    【讨论】:

      【解决方案2】:

      将您的 ZXing.Net 库包含到您的项目中。

      View.xaml

      <Grid x:Name="grdCamera">
      <Rectangle x:Name="_previewRect" 
             Margin="0" 
             Height="800" 
             Width="600" 
             HorizontalAlignment="Center" 
             VerticalAlignment="Center">
          <Rectangle.Fill>
              <VideoBrush x:Name="_previewVideo">
                  <VideoBrush.RelativeTransform>
                      <CompositeTransform  
                      x:Name="_previewTransform" CenterX=".5" CenterY=".5" />
                  </VideoBrush.RelativeTransform>
              </VideoBrush>
          </Rectangle.Fill>
      </Rectangle>
      

      C#代码

      private readonly DispatcherTimer _timer;
      private PhotoCameraLuminanceSource _luminance;
      private QRCodeReader _reader;
      private PhotoCamera _photoCamera;
      
      //Constructor
      public ScanPage()
      {
          InitializeComponent();
      
          _timer = new DispatcherTimer();
          _timer.Interval = TimeSpan.FromMilliseconds(250);
          _timer.Tick += (o, arg) => ScanPreviewBuffer();
      }
      
      protected override void OnNavigatedTo(NavigationEventArgs e)
      {
          _photoCamera = new PhotoCamera();
          _photoCamera.Initialized += OnPhotoCameraInitialized;
          _previewVideo.SetSource(_photoCamera);
      
          CameraButtons.ShutterKeyHalfPressed += (o, arg) => _photoCamera.Focus();
      
          base.OnNavigatedTo(e);
      }
      
      private void OnPhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e)
      {
          int width = Convert.ToInt32(_photoCamera.PreviewResolution.Width);
          int height = Convert.ToInt32(_photoCamera.PreviewResolution.Height);
      
          _luminance = new PhotoCameraLuminanceSource(width, height);
          _reader = new QRCodeReader();
      
          Dispatcher.BeginInvoke(() =>
          {
              _previewTransform.Rotation = _photoCamera.Orientation;
              _timer.Start();
          });
      }
      
      private void ScanPreviewBuffer()
      {
          try
          {
              _photoCamera.GetPreviewBufferY(_luminance.PreviewBufferY);
              var binarizer = new HybridBinarizer(_luminance);
              var binBitmap = new BinaryBitmap(binarizer);
              var result = _reader.decode(binBitmap);
              Dispatcher.BeginInvoke(() => MessageBox.Show(result.Text));
          }
          catch
          {
          }
      }
      

      以下链接可能对您有所帮助

      http://jonas.follesoe.no/2011/07/22/qr-code-scanning-on-windows-phone-75-using-zxlib/

      http://social.technet.microsoft.com/wiki/contents/articles/27164.windows-phone-optical-reader-library-for-windows-phone-8.aspx

      【讨论】:

        【解决方案3】:

        例如这个解决方案。 RadBarCode 这是完整的功能集。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-11
          相关资源
          最近更新 更多