From 3e4ad1c9f40ba4ab36ba611ec56b36ecf6ac32b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Sun, 8 Dec 2024 12:34:15 +0100 Subject: [PATCH] Erweitert --- QR-Code-Generator/Main.Designer.cs | 68 +++++++++-- QR-Code-Generator/Main.cs | 136 +++++++++++++++++---- QR-Code-Generator/Main.resx | 3 + QR-Code-Generator/QR-Code-Generator.csproj | 1 + 4 files changed, 177 insertions(+), 31 deletions(-) diff --git a/QR-Code-Generator/Main.Designer.cs b/QR-Code-Generator/Main.Designer.cs index 679127f..3edda7f 100644 --- a/QR-Code-Generator/Main.Designer.cs +++ b/QR-Code-Generator/Main.Designer.cs @@ -32,7 +32,7 @@ tabPage1 = new TabPage(); bt_gen_QR_URL = new Button(); label1 = new Label(); - tb_URL = new TextBox(); + textBox_URL = new TextBox(); tabPage2 = new TabPage(); bt_createQRAdress = new Button(); tabPage3 = new TabPage(); @@ -50,6 +50,11 @@ pb_icon = new PictureBox(); bt_clear_Icon = new Button(); button_Save_QRCode = new Button(); + colorDialog = new ColorDialog(); + panel_ColorLight = new Panel(); + panel_ColorDark = new Panel(); + button_ChangeColorLight = new Button(); + button_ChangeColorDark = new Button(); tabControl1.SuspendLayout(); tabPage1.SuspendLayout(); tabPage2.SuspendLayout(); @@ -73,7 +78,7 @@ // tabPage1.Controls.Add(bt_gen_QR_URL); tabPage1.Controls.Add(label1); - tabPage1.Controls.Add(tb_URL); + tabPage1.Controls.Add(textBox_URL); tabPage1.Location = new Point(4, 24); tabPage1.Name = "tabPage1"; tabPage1.Padding = new Padding(3); @@ -101,13 +106,13 @@ label1.TabIndex = 1; label1.Text = "URL:"; // - // tb_URL + // textBox_URL // - tb_URL.Location = new Point(6, 21); - tb_URL.Name = "tb_URL"; - tb_URL.Size = new Size(400, 23); - tb_URL.TabIndex = 0; - tb_URL.Text = "https://www.youtube.com/watch?v=3XW7SxiJC-k"; + textBox_URL.Location = new Point(6, 21); + textBox_URL.Name = "textBox_URL"; + textBox_URL.Size = new Size(400, 23); + textBox_URL.TabIndex = 0; + textBox_URL.Text = "https://www.youtube.com/watch?v=3XW7SxiJC-k"; // // tabPage2 // @@ -282,11 +287,49 @@ button_Save_QRCode.UseVisualStyleBackColor = true; button_Save_QRCode.Click += button_Save_QRCode_Click; // + // panel_ColorLight + // + panel_ColorLight.Location = new Point(480, 47); + panel_ColorLight.Name = "panel_ColorLight"; + panel_ColorLight.Size = new Size(23, 23); + panel_ColorLight.TabIndex = 6; + // + // panel_ColorDark + // + panel_ColorDark.Location = new Point(480, 73); + panel_ColorDark.Name = "panel_ColorDark"; + panel_ColorDark.Size = new Size(23, 23); + panel_ColorDark.TabIndex = 7; + // + // button_ChangeColorLight + // + button_ChangeColorLight.Location = new Point(509, 47); + button_ChangeColorLight.Name = "button_ChangeColorLight"; + button_ChangeColorLight.Size = new Size(75, 23); + button_ChangeColorLight.TabIndex = 8; + button_ChangeColorLight.Text = "button2"; + button_ChangeColorLight.UseVisualStyleBackColor = true; + button_ChangeColorLight.Click += button_ChangeColorLight_Click; + // + // button_ChangeColorDark + // + button_ChangeColorDark.Location = new Point(509, 73); + button_ChangeColorDark.Name = "button_ChangeColorDark"; + button_ChangeColorDark.Size = new Size(75, 23); + button_ChangeColorDark.TabIndex = 9; + button_ChangeColorDark.Text = "button3"; + button_ChangeColorDark.UseVisualStyleBackColor = true; + button_ChangeColorDark.Click += button_ChangeColorDark_Click; + // // Main // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(929, 733); + Controls.Add(button_ChangeColorDark); + Controls.Add(button_ChangeColorLight); + Controls.Add(panel_ColorDark); + Controls.Add(panel_ColorLight); Controls.Add(button_Save_QRCode); Controls.Add(bt_clear_Icon); Controls.Add(pb_icon); @@ -295,6 +338,8 @@ Controls.Add(tabControl1); Name = "Main"; Text = "QR-Code Generator"; + FormClosing += Main_FormClosing; + Load += Main_Load; tabControl1.ResumeLayout(false); tabPage1.ResumeLayout(false); tabPage1.PerformLayout(); @@ -312,7 +357,7 @@ private TabPage tabPage1; private Button bt_gen_QR_URL; private Label label1; - private TextBox tb_URL; + private TextBox textBox_URL; private TabPage tabPage2; private PictureBox pb_QRC; private Button button1; @@ -330,5 +375,10 @@ private RadioButton radioButton_WEP; private RadioButton radioButton_WPA; private Button button_Save_QRCode; + private ColorDialog colorDialog; + private Panel panel_ColorLight; + private Panel panel_ColorDark; + private Button button_ChangeColorLight; + private Button button_ChangeColorDark; } } diff --git a/QR-Code-Generator/Main.cs b/QR-Code-Generator/Main.cs index 26bc187..3b7ed87 100644 --- a/QR-Code-Generator/Main.cs +++ b/QR-Code-Generator/Main.cs @@ -1,12 +1,19 @@ +using Newtonsoft.Json; using QRCoder; using System.Reflection.Emit; using static QRCoder.PayloadGenerator; +using static QRCoder.QRCodeGenerator; namespace QR_Code_Generator { public partial class Main : Form { int pixlesPerModul = 20; + Color darkColor = Color.Black; + Color lightColor = Color.White; + bool drawQuietZones = true; + QRCodeGenerator.ECCLevel eCCLevel = ECCLevel.Q; + string colorConfigFile = "colors.json"; public enum EncryptionType { WPA, @@ -16,32 +23,28 @@ namespace QR_Code_Generator public Main() { InitializeComponent(); + panel_ColorDark.BackColor = darkColor; + panel_ColorLight.BackColor = lightColor; } private void bt_gen_QR_URL_Click(object sender, EventArgs e) { - Url generator = new Url(tb_URL.Text); - string payload = generator.ToString(); - - - - QRCodeGenerator qrg = new QRCodeGenerator(); - QRCodeData qrCodeData = qrg.CreateQrCode(payload, QRCodeGenerator.ECCLevel.H); - generateQR(qrCodeData); - - void generateQR(QRCodeData qrCodeData) + // Überprüfe, ob ein Link eingegeben wurde + if (string.IsNullOrWhiteSpace(textBox_URL.Text)) { - Bitmap? icon = null; - if (pb_icon.Image != null) - { - icon = (Bitmap)pb_icon.Image; - } - using (QRCode qrCode = new QRCode(qrCodeData)) - { - Bitmap qrCodeImage = qrCode.GetGraphic(pixlesPerModul, Color.Black, Color.White, icon, 25, 3); - pb_QRC.Image = qrCodeImage; - } + MessageBox.Show("Bitte geben Sie eine gültige URL ein.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; } + + // Erstelle die URL-Payload + string url = textBox_URL.Text; + var urlPayload = new PayloadGenerator.Url(url).ToString(); + + // Generiere den QR-Code mit der URL-Payload + Bitmap qrCode = GenerateQRCode(urlPayload, darkColor, lightColor, eCCLevel); + + // Setze den generierten QR-Code in die PictureBox + pb_QRC.Image = qrCode; } private void button1_Click(object sender, EventArgs e) @@ -107,13 +110,21 @@ namespace QR_Code_Generator string payload = wifiPayload.ToString(); // Generiere den QR-Code - using var qrGenerator = new QRCodeGenerator(); + + Bitmap qrCode = GenerateQRCode(payload, darkColor, lightColor, eCCLevel); + return qrCode; + } + + private Bitmap GenerateQRCode(string payload, Color dark, Color light, ECCLevel eCC) + { + QRCodeGenerator qrGenerator = new QRCodeGenerator(); var qrCodeData = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.Q); var qrCode = new QRCode(qrCodeData); // Rückgabe als Bitmap - return qrCode.GetGraphic(20); + return qrCode.GetGraphic(20, dark, light, drawQuietZones); } + public void SaveQRCodeFromPictureBox(PictureBox pictureBox) { // Überprüfen, ob ein Bild in der PictureBox vorhanden ist @@ -150,5 +161,86 @@ namespace QR_Code_Generator { SaveQRCodeFromPictureBox(pb_QRC); } + + private void button_ChangeColorLight_Click(object sender, EventArgs e) + { + using (ColorDialog colorDialog = new ColorDialog()) + { + // Optional: Standardfarbe festlegen + colorDialog.Color = lightColor; + + // Dialog anzeigen + if (colorDialog.ShowDialog() == DialogResult.OK) + { + // Ausgewählte Farbe anwenden + lightColor = colorDialog.Color; + panel_ColorLight.BackColor = lightColor; + } + } + } + + private void button_ChangeColorDark_Click(object sender, EventArgs e) + { + using (ColorDialog colorDialog = new ColorDialog()) + { + // Optional: Standardfarbe festlegen + colorDialog.Color = darkColor; + + // Dialog anzeigen + if (colorDialog.ShowDialog() == DialogResult.OK) + { + // Ausgewählte Farbe anwenden + darkColor = colorDialog.Color; + panel_ColorDark.BackColor = darkColor; + } + } + } + + private void SaveColors(string filePath) + { + var colorConfig = new + { + DarkColor = darkColor.ToArgb(), + LightColor = lightColor.ToArgb() + }; + + File.WriteAllText(filePath, JsonConvert.SerializeObject(colorConfig)); + // MessageBox.Show("Farben wurden erfolgreich gespeichert!", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + private void LoadColors(string filePath) + { + if (!File.Exists(filePath)) + { + MessageBox.Show("Die Konfigurationsdatei wurde nicht gefunden.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + try + { + var colorConfig = JsonConvert.DeserializeObject(File.ReadAllText(filePath)); + darkColor = Color.FromArgb((int)colorConfig.DarkColor); + lightColor = Color.FromArgb((int)colorConfig.LightColor); + + // Aktualisiere die UI, z. B. Farbpanels + panel_ColorDark.BackColor = darkColor; + panel_ColorLight.BackColor = lightColor; + + // MessageBox.Show("Farben wurden erfolgreich geladen!", "Erfolg", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show($"Fehler beim Laden der Farben: {ex.Message}", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void Main_FormClosing(object sender, FormClosingEventArgs e) + { + SaveColors(colorConfigFile); + } + + private void Main_Load(object sender, EventArgs e) + { + LoadColors(colorConfigFile); + } } } diff --git a/QR-Code-Generator/Main.resx b/QR-Code-Generator/Main.resx index 8b2ff64..d2a570b 100644 --- a/QR-Code-Generator/Main.resx +++ b/QR-Code-Generator/Main.resx @@ -117,4 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + \ No newline at end of file diff --git a/QR-Code-Generator/QR-Code-Generator.csproj b/QR-Code-Generator/QR-Code-Generator.csproj index f20e77e..9b77725 100644 --- a/QR-Code-Generator/QR-Code-Generator.csproj +++ b/QR-Code-Generator/QR-Code-Generator.csproj @@ -10,6 +10,7 @@ +