在图像上书写时添加图像中的新行

时间:2013-05-22 05:28:19

标签: c# asp.net image asp.net-3.5

我正在尝试在图像上写文字,但是我的文字有很多单词而且它不适合单行。所以我需要在下面的图像上添加新行(有些像换行)是我正在使用的代码。

string strFileName = Server.MapPath("~") + "\\Certificate\\" + CertificateName.ToString();
Bitmap bitMapImage = new Bitmap(strFileName);
Graphics graphicImage = Graphics.FromImage(bitMapImage);
graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
graphicImage.DrawString(strCourseName, new System.Drawing.Font("Arial", 22, FontStyle.Bold), SystemBrushes.GrayText, new Point(280, 325));
string strDesImgName = Server.MapPath("~") + "\\Certi\\certificate.jpg";
bitMapImage.Save(strDesImgName, ImageFormat.Jpeg);
graphicImage.Dispose();
bitMapImage.Dispose();

任何人都可以建议我,如何在下一行插入额外的文字。 谢谢你。

1 个答案:

答案 0 :(得分:0)

您基本上想要通过两次调用DrawString函数来实现自己的文本换行版本。一次写入第一行(部分截断),一次写入剩余的txt。传递给DrawString函数的point参数必须随着您使用的字体高度递增。见Font Height。如果您没有使用fixed width font,则更难以了解字符串的宽度以及将其拆分的位置。这是因为非固定宽度字体中的每个字符都是不同的宽度。在这个例子中,我将字符串拆分为第10个字符,您将不得不尝试对您的应用程序最有意义的内容。

graphicImage.DrawString(strCourseName, new System.Drawing.Font("Arial", 22, FontStyle.Bold), SystemBrushes.GrayText, new Point(280, 325));

变为

graphicImage.DrawString(strCourseName.Substring(0,10), new System.Drawing.Font("Arial", 22, FontStyle.Bold), SystemBrushes.GrayText, new Point(280, 325));
graphicImage.DrawString(strCourseName.Substring(10), , new System.Drawing.Font("Arial", 22, FontStyle.Bold), SystemBrushes.GrayText, new Point(280, 347));