mirror of
https://github.com/zs-yg/kortapp-z.git
synced 2025-12-06 16:10:42 +08:00
135 lines
5.0 KiB
C#
135 lines
5.0 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using ZXing;
|
|
using ZXing.Common;
|
|
using ZXing.QrCode;
|
|
|
|
namespace AppStore
|
|
{
|
|
public class QrCodeGeneratorForm : Form
|
|
{
|
|
private TextBox? inputTextBox;
|
|
private PictureBox? qrCodePictureBox;
|
|
private Button? generateButton;
|
|
private Button? saveButton;
|
|
|
|
public QrCodeGeneratorForm()
|
|
{
|
|
InitializeComponent();
|
|
this.Text = "二维码生成器";
|
|
this.Size = new Size(500, 600);
|
|
this.StartPosition = FormStartPosition.CenterScreen;
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
// 输入文本框
|
|
inputTextBox = new TextBox();
|
|
inputTextBox.Multiline = true;
|
|
inputTextBox.ScrollBars = ScrollBars.Vertical;
|
|
inputTextBox.Size = new Size(400, 100);
|
|
inputTextBox.Location = new Point(50, 30);
|
|
inputTextBox.PlaceholderText = "请输入要生成二维码的文本内容...";
|
|
this.Controls.Add(inputTextBox);
|
|
|
|
// 生成按钮
|
|
generateButton = new Button();
|
|
generateButton.Text = "生成二维码";
|
|
generateButton.Size = new Size(150, 40);
|
|
generateButton.Location = new Point(50, 150);
|
|
generateButton.Click += GenerateButton_Click;
|
|
this.Controls.Add(generateButton);
|
|
|
|
// 二维码显示区域
|
|
qrCodePictureBox = new PictureBox();
|
|
qrCodePictureBox.Size = new Size(300, 300);
|
|
qrCodePictureBox.Location = new Point(100, 220);
|
|
qrCodePictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
|
|
qrCodePictureBox.BorderStyle = BorderStyle.FixedSingle;
|
|
this.Controls.Add(qrCodePictureBox);
|
|
|
|
// 保存按钮
|
|
saveButton = new Button();
|
|
saveButton.Text = "保存二维码";
|
|
saveButton.Size = new Size(150, 40);
|
|
saveButton.Location = new Point(300, 150);
|
|
saveButton.Click += SaveButton_Click;
|
|
this.Controls.Add(saveButton);
|
|
}
|
|
|
|
private void GenerateButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(inputTextBox?.Text))
|
|
{
|
|
MessageBox.Show("请输入要生成二维码的文本内容", "提示",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
var writer = new BarcodeWriterPixelData
|
|
{
|
|
Format = BarcodeFormat.QR_CODE,
|
|
Options = new QrCodeEncodingOptions
|
|
{
|
|
Width = 300,
|
|
Height = 300,
|
|
Margin = 1
|
|
}
|
|
};
|
|
|
|
var pixelData = writer.Write(inputTextBox.Text);
|
|
var bitmap = new Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
|
|
var bitmapData = bitmap.LockBits(new Rectangle(0, 0, pixelData.Width, pixelData.Height),
|
|
System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
|
|
try
|
|
{
|
|
System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length);
|
|
}
|
|
finally
|
|
{
|
|
bitmap.UnlockBits(bitmapData);
|
|
}
|
|
qrCodePictureBox!.Image = bitmap;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"生成二维码失败: {ex.Message}", "错误",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private void SaveButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (qrCodePictureBox?.Image == null)
|
|
{
|
|
MessageBox.Show("请先生成二维码", "提示",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
return;
|
|
}
|
|
|
|
using (var saveDialog = new SaveFileDialog())
|
|
{
|
|
saveDialog.Filter = "PNG 图片|*.png|JPEG 图片|*.jpg|BMP 图片|*.bmp";
|
|
saveDialog.Title = "保存二维码图片";
|
|
if (saveDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
try
|
|
{
|
|
qrCodePictureBox!.Image.Save(saveDialog.FileName);
|
|
MessageBox.Show("二维码保存成功", "成功",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"保存二维码失败: {ex.Message}", "错误",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|