Вынос текста из TEXBOX В отдельную картинку
Есть код который делает QR картинку и сохраняет её с текстом в формате
Реализация классная Очень хорошо работает. Но я хочу связать новый Textbox В который будет писаться инф.
А располагать его в числовом формате в самом низу.
Посоветуйте как сделать лучше?
private Bitmap ConvertTextToImage(string txt, string fontname, int fontsize, Color bgcolor, Color fcolor, int width, int height)
{
var bmp = new Bitmap(181, 81);
using (var graphics = Graphics.FromImage(bmp))
{
var font = new Font("Arial", 10.0f);
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;
}
private Bitmap ConvertTextToImage1(string txt, string fontname, int fontsize, Color bgcolor, Color fcolor, int width, int height)
{
var bmp = new Bitmap(181, 30);
using (var graphics = Graphics.FromImage(bmp))
{
var font = new Font("Bookman Old Style", 18.0f);
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;
}
private Bitmap MergeHorizontal(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 Bitmap MergeVertical(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 button5_Click(object sender, EventArgs e)
{
using (SaveFileDialog dialog = new SaveFileDialog())
{
dialog.Filter = "JPEG files (*.jpg, *.jpeg, *.jpe, *.jfif) | *.jpg; *.jpeg; *.jpe; *.jfif";
dialog.FilterIndex = 2;
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
string savepath = dialog.FileName;
var bmp1 = (Bitmap)pictureBox1.Image;
var bmp2 = ConvertTextToImage(textBox1.Text, "Bookman Old Style", 10, Color.White, Color.Black, 180, 100);
bmp2.RotateFlip(RotateFlipType.Rotate270FlipNone);
var bmp3 = ConvertTextToImage1(textBox2.Text, "Bookman Old Style", 15, Color.White, Color.Black, 180, 100);
bmp3.RotateFlip(RotateFlipType.Rotate270FlipNone);
Bitmap result = MergeHorizontal(bmp1, bmp2);
result = MergeVertical(result, bmp3);
result.Save(savepath);
}
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Я не знаю, в чем вы здесь запутались. НО да, у вас какая-то мешанина из методов получилась.
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;
}
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 button5_Click(object sender, EventArgs e)
{
using (SaveFileDialog dialog = new SaveFileDialog())
{
dialog.Filter = "JPEG files (*.jpg, *.jpeg, *.jpe, *.jfif) | *.jpg; *.jpeg; *.jpe; *.jfif";
dialog.FilterIndex = 2;
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
string savepath = dialog.FileName;
var bmp1 = (Bitmap)pictureBox1.Image;
var bmp2 = ConvertTextToImage(textBox1.Text, "Bookman Old Style", 10, Color.White, Color.Black, 181, 30);
bmp2.RotateFlip(RotateFlipType.Rotate270FlipNone);
var bmp3 = ConvertTextToImage(textBox2.Text, "Bookman Old Style", 15, Color.White, Color.Black, 181, 30);
bmp3.RotateFlip(RotateFlipType.Rotate270FlipNone);
Bitmap result = Merge(bmp1, bmp2);
result = Merge(result, bmp3);
result.Save(savepath, ImageFormat.Jpeg);
}
}
}

