1. 二维码的生成

二维码生成用到了一个第三方的插件(zxing.wp8.0)

根据指定的信息,生成对应的二维码。

代码很简单:

bool falg=tbk.Text==""?false:true;
            if (falg==false)
            {
                MessageBox.Show("message lose, can't produce!");
                return;
            }
            EncodingOptions options;//包含一些编码、大小等的设置
            BarcodeWriter write = null;//用来生成二维码,对应的BarcodeReader用来解码
            options = new QrCodeEncodingOptions
            {
                DisableECI = true,
                CharacterSet = "UTF-8",
                Width = 300,
                Height = 300,
                Margin = 3
            };
            write = new BarcodeWriter();
            write.Format = BarcodeFormat.QR_CODE;
            write.Options = options;
           
            WriteableBitmap bitmap = write.Write(tbk.Text.Trim());
            imgCode.Source = bitmap;

下面看下二维码的扫描(同样用的一个第三方的插件 Silverlight_ZXing_Core)

直接上代码

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

{

           _reader = new QRCodeReader();

_photoCamera = new PhotoCamera();

      _photoCamera.Initialized += new EventHandler<CameraOperationCompletedEventArgs>(cam_Initialized);                 _videoBrush.SetSource(_photoCamera);

       BarCodeRectInitial();

       base.OnNavigatedTo(e);

}

//释放资源

protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
        {
            if (_photoCamera != null)
            {
                _timer.Stop();
                _photoCamera.CancelFocus();
                _photoCamera.Dispose();
            }
           
            base.OnNavigatingFrom(e);
        }

//初始化

void cam_Initialized(object sender, CameraOperationCompletedEventArgs e)
 {
            int width = Convert.ToInt32(_photoCamera.PreviewResolution.Width);
            int height = Convert.ToInt32(_photoCamera.PreviewResolution.Height);
            _luminance = new PhotoCameraLuminanceSource(width, height);
           
            Dispatcher.BeginInvoke(() =>
            {
                _previewTransform.Rotation = _photoCamera.Orientation;
                _timer.Start();
            });
            _photoCamera.FlashMode = FlashMode.Auto;
            _photoCamera.Focus();
}

  

public void SetStillPicture()

{

     int width = Convert.ToInt32(_photoCamera.PreviewResolution.Width);

        int height = Convert.ToInt32(_photoCamera.PreviewResolution.Height);

    int[] PreviewBuffer = new int[width * height];

     _photoCamera.GetPreviewBufferArgb32(PreviewBuffer);

WriteableBitmap wb = new WriteableBitmap(width, height);

    PreviewBuffer.CopyTo(wb.Pixels, 0);

MemoryStream ms = new MemoryStream();

    wb.SaveJpeg(ms, wb.PixelWidth, wb.PixelHeight, 0, 80);

     ms.Seek(0, SeekOrigin.Begin);

BitmapImage bi = new BitmapImage();

     bi.SetSource(ms);

    ImageBrush still = new ImageBrush();

    still.ImageSource = bi;

     frame.Fill = still;

    still.RelativeTransform = new CompositeTransform()                 { CenterX = 0.5, CenterY = 0.5, Rotation = _photoCamera.Orientation };

}

private void ScanPreviewBuffer()

{              

     try

       {

          _photoCamera.GetPreviewBufferY(_luminance.PreviewBufferY);

           var binarizer = new HybridBinarizer(_luminance);

          var binBitmap = new BinaryBitmap(binarizer);

          Result result = _reader.decode(binBitmap);

           if (result != null)

           {

            _timer.Stop();

             SetStillPicture();

             BarCodeRectSuccess();

             Dispatcher.BeginInvoke(() =>

             {

                //读取成功,结果存放在result.Text

                 NavigationService.Navigate(new Uri("/ScanResult.xaml?result=" + result.Text, UriKind.Relative));

      });

          }

         else

         {

             _photoCamera.Focus();

         }

       }

       catch

       {             }

}

Windows phone 8 二维码生成与扫描的更多相关文章

  1. Android开发——Android中的二维码生成与扫描

    0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描.本篇旨在帮助有需求的同学快速完成二维 ...

  2. wex5 实战 二维码生成,扫描,蓝牙打印

    给人设计了一个小模块,要求是,把一个单号生成二维码,实现扫描查询单号具体信息,并能通过蓝牙把二维码打印出来.功能实现并不复杂,今天一口气把它搞定.来看效果. 一   效果演示: 二.二维码生成 1 在 ...

  3. 转【微信小程序 四】二维码生成/扫描二维码

    原文:https://blog.csdn.net/xbw12138/article/details/75213274 前端 二维码生成 二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示的时 ...

  4. iOS 之 二维码生成与扫描(LBXScan)

    参考:https://github.com/MxABC/LBXScan 步骤如下: 1. 下载 通过参考网址进行下载. 2. 导入 导入整个LBXScan文件夹 3. 配置 在pch中加入 #impo ...

  5. IOS原生方法实现二维码生成与扫描

    转自:http://www.jianshu.com/p/d6663245d3fa 二维码的生成有好多第三方库,如Z-Xing.但是为了控制安装包的大小,或者并不需要其他的一些额外的功能,用系统的方法即 ...

  6. 二维码生成与windows系统IP查询功能

    一个木函是一款强大的手机软件,里面囊括了很多小功能,每一个都基本可以堪称小程序.那么,这些小功能具体是怎么实现的呢?让我们来一起来探讨二维码生成.IP查询这两个功能吧! 一.二维码生成 首先,我们来看 ...

  7. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...

  8. C#二维码生成与解码(二)

    本文内容在<C#二维码生成与解码>的基础上增加了纠错级别和Logo图标加入,增加了二维码的功能.关于透明度在这里没有单独显现,因为在颜色里面就已经包含,颜色值由8位8进制构成,最前面的两位 ...

  9. Python 实现二维码生成和识别

    今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...

随机推荐

  1. Mybatis按照SQL查询字段的顺序返回查询结果,使用resultType="java.util.LinkedHashMap"

    在使用Mybatis开发时,Mybatis返回的结果集就是个map,当返回map时只需要做好SQL映射就好了,减少了代码量,简单便捷,缺点是不太方便维护,但是写大量的vo类去返回也挺累的,这个看你个人 ...

  2. ubuntu hadoop安装

    参考: https://wangchangchung.github.io/2017/09/28/Ubuntu-16-04%E4%B8%8A%E5%AE%89%E8%A3%85Hadoop%E5%B9% ...

  3. java基于jcifs.smb实现远程发送文件到服务器

    1.服务器指定共享文件夹 1.1.验证服务器共享文件夹本地可以访问: 2.导入依赖的相关jar包         jcifs-1.3.**.jar: <dependency> <gr ...

  4. Linux学习:Makefile简介及模板

    一.基本概念介绍: Makefile 文件就是告诉make命令需要怎么样的去编译和链接程序. 编写Makefile的基本规则: 1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接. 2. ...

  5. 使用极路由进行外网映射,本地电脑做服务器,运行javaWeb项目

    最近在学习javaWeb,一个项目需要android访问服务器,于是使用自己的笔记本电脑作为服务器,需要进行端口映射.使得外网可以访问自己的javaWeb项目或者网站之类的.普通路由请看:http:/ ...

  6. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_17-异常处理-可预知异常处理-异常处理测试

    ResultCode有很多的实现类 cmsCode有很多类型的错误异常 pgeService内当CmsPage这个对象为空的时候,异常类型就可以抛出CmsCode里面的错误代码 if(cmsPage1 ...

  7. double,float,BigDecimal类型数值的操作

    float四舍五入保留两位小数 /** * float四舍五入保留两位小数 * */ public static float formatDecimal(float n) { return (Math ...

  8. Ubuntu 18.04 下 PostgreSQL 10 的安装与基础配置

    下载安装 在命令行执行如下语句: apt-get install postgresql-10 该指令会帮助你下载如下PostgreSQL组件: name |explain | ------------ ...

  9. JQ也要面向对象~在JQ中扩展静态方法和实例方法(jq扩展方法)

    JQ也要面向对象,事实上,无论哪种开发语言,在开发功能时,都要把面向对象拿出来,用它的思想去干事,去理解事,面向对象会使问题简单化,清晰化,今天说两个概念“静态方法”与“实现方法”,这个在面向对象的语 ...

  10. 利用工具破解HTTP身份验证的多种方法

    https://www.hackingarticles.in/multiple-ways-to-exploiting-http-authentication/ 1)场景 利用Apache配置HTTP验 ...