如果我的程序未激活,我需要向图像添加文本。这个文字应该填满整个图像。它还应该根据需要进行换行和缩放以适合图像。
我找到了很多可行的解决方案来添加缩放到图像大小的文本。但在每种情况下,它只有一行文字,因此也不会像我想要的那样包装。
如何根据imagesize设置字体大小并使用wordwrap?
编辑: 这是一个winforms应用程序。
编辑2:我试图做的事情:
FileStream fs = new FileStream(this.MasterPath + @"\***\***\***\" + file.Name, FileMode.Open, FileAccess.Read);
Image img = Image.FromStream(fs);
fs.Close();
Bitmap b = new Bitmap(img);
Graphics graphics = Graphics.FromImage(b);
string text = "Some Text";
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
Font font = new Font("Arial", 120, FontStyle.Regular, GraphicsUnit.Pixel);
SolidBrush brush = new SolidBrush(Color.FromArgb(128, Color.Red));
Rectangle rec = new Rectangle(0, 0, b.Width, b.Height);
float sy = (float)b.Height / (float)1240; //I used 1240 and 1844 because on an image with
float sx = (float)b.Width / (float)1844; //this size the text had the right size
graphics.ScaleTransform(sx, sy);
graphics.DrawString(text, font, brush, rec, stringFormat);
b.Save(this.MasterPath + @"\***\***\***\" + file.Name, img.RawFormat);
img.Dispose();
b.Dispose();
答案 0 :(得分:1)
这是一个非常粗略的概念。
我认为最简单的解决方案是使用RichTextBox控件替换表单上的图形,然后编辑布局使其看起来透明。
然后你可以使用here解释的解决方案(@ blak3r)来获得想要的结果。
修改强>
如果你想要一个图像,你可以使用以下代码:
Bitmap bmp = new Bitmap(richTextBox1.Width, richTextBox1.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(this.PointToScreen(richTextBox1.Location), new Point(0, 0), bmp.Size);
bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
bmp.Dispose();