Graphics DrawStringメソッドを使用して画像にテキストを書き込んでいて、テキストをRectangleFでバインドしています。ここに私のコードです:これは、いくつかのケースのために働くC#Graphics.DrawString RectangleF Auto-Height:その高さを見つける方法は?
//Write header2
RectangleF header2Rect = new RectangleF();
header2Rect.Width = 600;
header2Rect.Location = new Point(30, 105);
graphicImage.DrawString(header2, new Font("Gotham Medium", 28, FontStyle.Bold),brush, header2Rect);
//Write Description
RectangleF descrRect = new RectangleF();
descrRect.Width = 600;
int measurement = ((int)graphicImage.MeasureString(header2, new Font("Gotham Medium", 28, FontStyle.Bold)).Height);
var yindex = int.Parse(105 + header2Rect.Height.ToString());
descrRect.Location = new Point(30, 105+measurement);
graphicImage.DrawString(description.ToLower(), new Font("Gotham", 24, FontStyle.Italic), SystemBrushes.WindowText, descrRect);
(すなわちheader2
が長いだけで1行があるとき。)が、私のmeasurement
変数が唯一のフォントの高さは、全体ではなくDrawString
矩形を測定します。高さがそのテキストに応じて変わるので、私は静的に高さを設定したくありません(header2Rect
)。
header2Rect.Height = 0
が原因でyindexが機能しません。 header2
の行数を確認する方法はありますか?
MeasureString
の幅を境界矩形の幅で除算するだけで、次にMeasureString
の高さを乗算する必要がありますか?私は良い方法があると仮定しています。
おかげ
[EDIT]高さは実際には0であるように見えますが、テキストはすぐ外に溢れた、しかし幅はまだテキストの折り返しを収縮。私はちょうど高さを見つけるために数学計算をしましたが、よりよい方法があることを望みます。
あなたは素晴らしいです!これは私が探していたものです!ありがとう。 –
私のC++プロジェクトでは、 'StringFormat :: GenericDypault()'の代わりに 'StringFormat :: GenericDefault()'だけが正しく動作します。理由は分かりません。 –