Exemple #1
0
        /// <summary>
        /// 加载二维码
        /// </summary>
        private void LoadQrCode(Bitmap qrCodeImage)
        {
            qrcodeBox.Dispatcher.Invoke(delegate()
            {
                IntPtr myImagePtr = qrCodeImage.GetHbitmap();                                                                                                                          //创建GDI对象,返回指针

                BitmapSource imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(myImagePtr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); //创建imgSource

                WinAPIHelper.DeleteObject(myImagePtr);

                qrcodeBox.Source = imgsource;
            });
        }
Exemple #2
0
        /// <summary>
        /// 获取登陆二维码并显示
        /// </summary>
        private void GetQrcode()
        {
re:
            //获取二维码要包含的url
            string str = Bas.GetHTTPBody("https://passport.bilibili.com/qrcode/getLoginUrl", "", "https://passport.bilibili.com/login");

            if (!string.IsNullOrEmpty(str))
            {
                JObject obj = JObject.Parse(str);

                if ((int)obj["code"] == 0)
                {
                    // 生成二维码的内容
                    string          strCode     = obj["data"]["url"].ToString();
                    QRCodeGenerator qrGenerator = new QRCodeGenerator();
                    QRCodeData      qrCodeData  = qrGenerator.CreateQrCode(strCode, QRCodeGenerator.ECCLevel.Q);
                    QRCode          qrcode      = new QRCode(qrCodeData);

                    //生成二维码位图
                    Bitmap qrCodeImage = qrcode.GetGraphic(5, Color.Black, Color.White, null, 0, 6, false);

                    qrcodeBox.Dispatcher.Invoke(delegate()
                    {
                        IntPtr myImagePtr = qrCodeImage.GetHbitmap();                                                                                                                          //创建GDI对象,返回指针

                        BitmapSource imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(myImagePtr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); //创建imgSource

                        WinAPIHelper.DeleteObject(myImagePtr);

                        qrcodeBox.Source = imgsource;
                    });

                    Monitor   = new Timer(MonitorCallback, obj["data"]["oauthKey"].ToString(), 1000, 1000);
                    Refresher = new Timer(RefresherCallback, null, 180000, Timeout.Infinite);
                }
            }
            else
            {
                goto re;
            }
        }