我正在尝试在图像上写文字,但是我的文字有很多单词而且它不适合单行。所以我需要在下面的图像上添加新行(有些像换行)是我正在使用的代码。
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();
任何人都可以建议我,如何在下一行插入额外的文字。 谢谢你。
答案 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));