1

如果我有一个字符串并且我想得到一个特定宽度的字符串的一部分,我怎么能得到它?假设我的

string MyStringIs="MyBasketItems1, MyBasketItems1, MyBasketItems1, "\n"MyBasketItems4";

我想得到这个特定宽度字符串的一部分来在面板上绘制我怎么能得到它?

4

1 回答 1

3

您可以尝试使用此功能(几乎没有测试过)

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”

于 2013-09-09T10:35:02.127 回答