С# Помощь по QR гениратору
Нашёл я тут шаблон программы которую хочу поюзать, но не могу сам допилить ибо нету опыта и знаний как добиться от первого клика копирование в буфер текста из textBox1 и после pictureBox1.Image = qrcode as Image; запихивать то что было в буфере + Сделанную картинку в одну картинку и вывод на печать?.....
private void button1_Click(object sender, EventArgs e)
{
string qrtext = textBox1.Text;
QRCodeEncoder encoder = new QRCodeEncoder();
Bitmap qrcode = encoder.Encode(qrtext);
pictureBox1.Image = qrcode as Image;
}
Ответы (1 шт):
Тут нашел метод принта текста в картинку. Только учтите что размеры картинки вам нужно будет рассчитывать самостоятельно на основе длинны текста и размеров шрифта:
private Bitmap ConvertTextToImage(string txt, string fontname, int fontsize, Color bgcolor, Color fcolor, int width, int height)
{
var bmp = new Bitmap(width, height);
using (var graphics = Graphics.FromImage(bmp))
{
var font = new Font(fontname, fontsize);
graphics.FillRectangle(new SolidBrush(bgcolor), 0, 0, bmp.Width, bmp.Height);
graphics.DrawString(txt, font, new SolidBrush(fcolor), new RectangleF(0, 0, bmp.Width, bmp.Height));
}
return bmp;
}
Теперь когда есть картинка из PictureBox и способ получить вторую из текста - соединяем "по горизонтали":
private Bitmap Merge(Bitmap bmp1, Bitmap bmp2)
{
var res = new Bitmap(bmp1.Width + bmp2.Width, Math.Max(bmp1.Height, bmp2.Height));
using (var graphics = Graphics.FromImage(res))
{
graphics.DrawImage(bmp1, Point.Empty);
graphics.DrawImage(bmp2, new Point(bmp1.Width, 0));
}
return res;
}
Теперь, если хотим сохранить объединенную картинку, на какую-нибудь кнопку вешаем такой обработчик (путь задавайте как вам будет удобнее):
private void Save(object sender, EventArgs e)
{
var res1 = (Bitmap) pictureBox1.Image;
var res2 = ConvertTextToImage(textBox1.Text, "Bookman Old Style", 10, Color.White, Color.Black, 100, 100);
string savepath = "image.png";
Merge(res1, res2).Save(savepath);
}