1

画像にテキストを書き込もうとしていますが、テキストが多すぎて 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 関数を 2 回呼び出して、独自のバージョンのテキスト行折り返しを実装する必要があります。最初の行 (部分的に切り捨てられた) を書き込むために 1 回、残りの txt を書き込むために 1 回。DrawString 関数に渡すポイント パラメータは、使用しているフォントの高さでインクリメントする必要があります。フォントの高さを参照してください。固定幅フォントを使用していない場合は、文字列の幅と分割する場所を知るのがより困難になる可能性があります。これは、非固定幅フォントの各文字の幅が異なるためです。この例では、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 に答える