using Net.Codecrete.QrCodeGenerator; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Text; 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.Media.TextFormatting; using System.Windows.Navigation; using System.Windows.Shapes; using static System.Net.WebRequestMethods; namespace SunlightAggregationManager.View { /// /// StatePage.xaml 的交互逻辑 /// public partial class imgQR : UserControl { //调用配置文件 private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "Configini.ini"); public imgQR() { InitializeComponent(); } /// /// 生成二维码 /// 调用示例: imgQR_CREATE("TEST", imgQR);; /// /// [字符串] /// Image控件 void imgQR_CREATE(string DAT, System.Windows.Controls.Image image) { // 生成二维码对象 QrCode qr = QrCode.EncodeText(DAT, QrCode.Ecc.Medium); // 手动绘制 Bitmap (不使用扩展方法) int scale = 10; // 每个点的像素大小 int border = 4; // 边距 int size = (qr.Size + border * 2) * scale; // 创建位图 using (Bitmap bmp = new Bitmap(size, size)) { using (Graphics gfx = Graphics.FromImage(bmp)) { // 填充背景(白色) gfx.Clear(System.Drawing.Color.White); // 绘制二维码点阵(黑色) using (System.Drawing.Brush brush = new SolidBrush(System.Drawing.Color.Black)) { for (int y = 0; y < qr.Size; y++) { for (int x = 0; x < qr.Size; x++) { if (qr.GetModule(x, y)) { System.Drawing.Rectangle rect = new System.Drawing.Rectangle( (x + border) * scale, (y + border) * scale, scale, scale); gfx.FillRectangle(brush, rect); } } } } } // 转换为 WPF 的 BitmapImage 并显示 using (MemoryStream ms = new MemoryStream()) { bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); ms.Position = 0; BitmapImage bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = ms; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit(); // 赋值给 Image 控件 (假设控件名为 imgQR) image.Source = bitmapImage; } } } private void imgQR_Loaded(object sender, RoutedEventArgs e) { string text_APP = "TEST"; // 要生成二维码的内容 string text_LINK = Configini.IniReadvalue("SYS", "LINK"); // 要生成二维码的内容 imgQR_CREATE(text_APP, imgQR_app); imgQR_CREATE(text_LINK, imgQR_link); } } }