Сегодня мы создадим простую программу на C# Windows Forms, которая позволяет генерировать QR-код с контактной информацией и сохранять его в телефон сразу в формате vCard. Такой QR-код при сканировании смартфоном открывается как визитка и сразу предлагает добавить контакт в адресную книгу.

Что будет уметь программа

  • Вводить данные контакта через текстовые поля:

    • Имя

    • Фамилия

    • Должность

    • Организация

    • Два телефонных номера

    • Электронная почта

  • Генерировать QR-код в формате vCard 3.0

  • Отображать QR-код на форме в PictureBox

  • Сохранять QR-код в формате JPEG

Используемые технологии

  • C# WinForms

  • Библиотека QRCoder (добавляется через NuGet)

Основной код программы

Пример кода для формы с двумя кнопками (Сгенерировать и Сохранить) и одним PictureBox:

				
					using System;
using System.Drawing;
using System.Windows.Forms;
using QRCoder; // NuGet: QRCoder

namespace QRContactGenerator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnGenerate_Click(object sender, EventArgs e)
        {
            string firstName = txtFirstName.Text.Trim();
            string lastName = txtLastName.Text.Trim();
            string jobTitle = txtJobTitle.Text.Trim();
            string organization = txtOrganization.Text.Trim();
            string phone1 = txtPhone1.Text.Trim();
            string phone2 = txtPhone2.Text.Trim();
            string email = txtEmail.Text.Trim();

            if (string.IsNullOrEmpty(firstName) || string.IsNullOrEmpty(lastName) || string.IsNullOrEmpty(phone1))
            {
                MessageBox.Show("Введите Имя, Фамилию и хотя бы один Телефон!", 
                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            // Формируем vCard 3.0
            string vCard =
                "BEGIN:VCARD\n" +
                "VERSION:3.0\n" +
                $"N:{lastName};{firstName};;;\n" +
                $"FN:{firstName} {lastName}\n";

            if (!string.IsNullOrEmpty(organization))
                vCard += $"ORG:{organization}\n";

            if (!string.IsNullOrEmpty(jobTitle))
                vCard += $"TITLE:{jobTitle}\n";

            vCard += $"TEL;CELL:{phone1}\n";

            if (!string.IsNullOrEmpty(phone2))
                vCard += $"TEL;CELL:{phone2}\n";

            if (!string.IsNullOrEmpty(email))
                vCard += $"EMAIL:{email}\n";

            vCard += "END:VCARD";

            // Генерация QR
            QRCodeGenerator qrGenerator = new QRCodeGenerator();
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(vCard, QRCodeGenerator.ECCLevel.Q);
            QRCode qrCode = new QRCode(qrCodeData);
            Bitmap qrImage = qrCode.GetGraphic(20);

            pictureBox1.Image = qrImage;
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (pictureBox1.Image == null)
            {
                MessageBox.Show("Сначала сгенерируйте QR-код!", "Ошибка", 
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            SaveFileDialog sfd = new SaveFileDialog
            {
                Filter = "JPEG Image|*.jpg",
                Title = "Сохранить QR-код"
            };

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                MessageBox.Show("QR-код успешно сохранён!", "Готово", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}

				
			

Как это работает

  1. Пользователь вводит данные контакта (имя, фамилию, должность, телефоны, email, организацию).

  2. По нажатию кнопки Сгенерировать программа формирует строку в формате vCard 3.0.

  3. Библиотека QRCoder создаёт QR-код, который отображается в PictureBox.

  4. Кнопка Сохранить позволяет экспортировать QR-код в формате JPEG для дальнейшего использования.

📱 Теперь при сканировании такого QR-кода смартфон сразу предложит сохранить контакт в телефонную книгу с заполненными полями.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *