You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
5.0 KiB
135 lines
5.0 KiB
using Container.Common;
|
|
using QRCoder;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace Container.Win
|
|
{
|
|
/// <summary>
|
|
/// RichAD.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class RichAD : UserControl
|
|
{
|
|
Class_Log log = new Class_Log();
|
|
App app = ((App)Application.Current);
|
|
public RichAD(string logo, string name,string devNum, string floor, string floorOrder, string houseNum,string xaxis, string shopFormatName,string shopFormatIcon,string applets)
|
|
{
|
|
InitializeComponent();
|
|
try
|
|
{
|
|
this.TxtName.Text = name;
|
|
this.TxtFloor.Text = floor;
|
|
logo = app.HttpUrl+ logo;
|
|
var httpPath = logo.Substring(0, logo.IndexOf("://") + 3);
|
|
var fileBackPath = logo.Substring(logo.IndexOf("://") + 3).Replace("//", "/").Replace("\\", "/").Replace(@"\", @"/");
|
|
logo = httpPath + fileBackPath;
|
|
Uri uri = new Uri(logo, UriKind.Absolute);
|
|
this.ImgLogo.Source = BitmapFrame.Create(uri);
|
|
if (string.IsNullOrEmpty(shopFormatIcon))
|
|
{
|
|
this.imgType.Visibility = Visibility.Hidden;
|
|
this.TxtType.Margin = new Thickness(320,-20,0,0);
|
|
}
|
|
else {
|
|
this.imgType.Visibility = Visibility.Visible;
|
|
shopFormatIcon = app.HttpUrl + shopFormatIcon;
|
|
var httpIconPath = shopFormatIcon.Substring(0, shopFormatIcon.IndexOf("://") + 3);
|
|
var fileBackIconPath = shopFormatIcon.Substring(shopFormatIcon.IndexOf("://") + 3).Replace("//", "/").Replace("\\", "/").Replace(@"\", @"/");
|
|
shopFormatIcon = httpIconPath + fileBackIconPath;
|
|
Uri uriIcon = new Uri(shopFormatIcon, UriKind.Absolute);
|
|
this.iconImage.Source = BitmapFrame.Create(uriIcon);
|
|
this.TxtType.Margin = new Thickness(380, -20, 0, 0);
|
|
}
|
|
this.TxtType.Text = shopFormatName;
|
|
CreateQR(applets+ "?sname="+ devNum + "&spoint="+xaxis+"&sfloororder="+floorOrder+"&ehousenum="+houseNum);
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
log.WriteLogFile(e.ToString(), "RichAD");
|
|
}
|
|
|
|
}
|
|
|
|
private void CreateQR(string plainText)
|
|
{
|
|
Class_Log log = new Class_Log();
|
|
try
|
|
{
|
|
|
|
|
|
QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
|
|
//QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
|
|
QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
|
|
QRCode qrcode = new QRCode(qrCodeData);
|
|
Bitmap qrCodeImage = qrcode.GetGraphic(15);
|
|
MemoryStream ms = new MemoryStream();
|
|
qrCodeImage.Save(ms, ImageFormat.Png);
|
|
ImageSourceConverter imageSourceConverter = new ImageSourceConverter();
|
|
QRImage.Source = (ImageSource)imageSourceConverter.ConvertFrom(ms);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.WriteLogFile(ex.ToString(), "qr");
|
|
|
|
}
|
|
}
|
|
|
|
public static byte[] GetImageFromResponse(string url, string cookie = null)
|
|
{
|
|
redo:
|
|
try
|
|
{
|
|
System.Net.WebRequest request = System.Net.WebRequest.Create(url);
|
|
if (!string.IsNullOrWhiteSpace(cookie))
|
|
{
|
|
request.Headers[System.Net.HttpRequestHeader.Cookie] = cookie;
|
|
}
|
|
|
|
|
|
System.Net.WebResponse response = request.GetResponse();
|
|
|
|
|
|
using (Stream stream = response.GetResponseStream())
|
|
{
|
|
using (MemoryStream ms = new MemoryStream())
|
|
{
|
|
Byte[] buffer = new Byte[1024];
|
|
int current = 0;
|
|
do
|
|
{
|
|
ms.Write(buffer, 0, current);
|
|
} while ((current = stream.Read(buffer, 0, buffer.Length)) != 0);
|
|
return ms.ToArray();
|
|
}
|
|
}
|
|
}
|
|
catch (System.Net.WebException ex)
|
|
{
|
|
if (ex.Message == "基础连接已经关闭: 发送时发生错误。")
|
|
{
|
|
goto redo;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|