1

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

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();

任何人都可以建议我,我如何在下一行插入额外的文本。提前致谢。

4

1 回答 1

0

您基本上会想要通过两次调用 DrawString 函数来实现您自己的文本换行版本。一次写入第一行(部分截断),一次写入剩余的 txt。您传递给 DrawString 函数的 point 参数必须随着您正在使用的字体的高度而增加。请参阅字体高度。如果您不使用固定宽度的字体,则可能更难以知道字符串的宽度以及将其拆分的位置。这是因为非固定宽度字体中的每个字符都是不同的宽度。对于这个例子,我在第 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));
于 2013-05-22T06:07:42.740 回答