文字列があり、特定の幅の文字列の一部を取得したい場合、どうすれば取得できますか? 私の
string MyStringIs="MyBasketItems1, MyBasketItems1, MyBasketItems1, "\n"MyBasketItems4";
この特定の幅の文字列の一部を取得してパネルに描画したいのですが、どうすれば取得できますか?
この機能を試すことができます(ほとんどテストされていません)
public string GetMaxPixelSubstring(string input, int maxLength, Graphics graph, Font font)
{
string part = "";
foreach (char oneChar in input.ToCharArray())
{
string temp = part + oneChar;
if (graph.MeasureString(temp, font).Width > maxLength)
return part;
else
part = temp;
}
return input;
}
アイデアは、元の入力文字列を文字ごとにループし、それらを部分文字列に追加し、特定のフォントを使用して部分文字列の長さをピクセル単位で測定することです。
たとえば、フォーム ボタンのクリック イベント内で上記の関数を呼び出す
string MyStringIs="MyBasketItems1, MyBasketItems1, MyBasketItems1, MyBasketItems4";
string result = GetSubstrings(MyStringIs, 220, this.CreateGraphics(), new Font("Arial", 12f));
MessageBox.Show(result);
「MyBasketItems1、MyBasketIt」を表示