using ProxySU_Core.Models; using ProxySU_Core.ViewModels; using QRCoder; using System; using System.Collections.Generic; using System.Drawing; 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.Shapes; namespace ProxySU_Core.Views.ClientInfo { /// /// ClientInfoWindow.xaml 的交互逻辑 /// public partial class ClientInfoWindow { public XraySettingsViewModel Settings { get; set; } public ClientInfoWindow(Record record) { InitializeComponent(); ResizeMode = ResizeMode.NoResize; WindowStartupLocation = WindowStartupLocation.CenterScreen; Settings = new XraySettingsViewModel(record.Settings); DataContext = this; } private void SelectDefault(object sender, SelectionChangedEventArgs e) { var tabControl = e.Source as TabControl; var item = (tabControl.SelectedItem as TabItem); var itemControl = item.Content as ContentControl; if (itemControl == null) return; Console.WriteLine(itemControl.Tag); } private void BuildQrCode(object sender, SelectionChangedEventArgs e) { var tabControl = e.Source as TabControl; var item = (tabControl.SelectedItem as TabItem); if (item == null) return; var type = (XrayType)item.Tag; if (type == null) return; BuildQrCode(type); } private void BuildQrCode(XrayType type) { string shareLink = string.Empty; switch (type) { case XrayType.VLESS_TCP_XTLS: shareLink = Settings.VLESS_TCP_XTLS_ShareLink; break; case XrayType.VLESS_TCP: shareLink = Settings.VLESS_TCP_ShareLink; break; case XrayType.VLESS_WS: shareLink = Settings.VLESS_WS_ShareLink; break; case XrayType.VLESS_H2: break; case XrayType.VLESS_KCP: shareLink = Settings.VLESS_KCP_ShareLink; break; case XrayType.VLESS_gRPC: shareLink = Settings.VLESS_gRPC_ShareLink; break; case XrayType.VMESS_TCP: shareLink = Settings.VMESS_TCP_ShareLink; break; case XrayType.VMESS_WS: shareLink = Settings.VMESS_WS_ShareLink; break; case XrayType.VMESS_H2: break; case XrayType.VMESS_KCP: shareLink = Settings.VMESS_KCP_ShareLink; break; case XrayType.Trojan_TCP: shareLink = Settings.Trojan_TCP_ShareLink; break; case XrayType.Trojan_WS: break; case XrayType.ShadowsocksAEAD: shareLink = Settings.ShadowSocksShareLink; break; default: break; } QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(shareLink, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20); MemoryStream ms = new MemoryStream(); qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); byte[] bytes = ms.GetBuffer(); ms.Close(); BitmapImage image = new BitmapImage(); image.BeginInit(); image.StreamSource = new MemoryStream(bytes); image.EndInit(); QrImage.Source = image; } } }