0

我知道它可以在标签中做行距。有人可以帮我做这个吗?我需要一个双倍间距或 1.5 倍间距的标签。

我找到了这段代码,但它不起作用:

    private void label1_Paint(object sender, PaintEventArgs e)
    {
        string text = "Sri Lanka";
        Graphics g = e.Graphics;
        Font font = new Font("Arial", 10);
        Brush brush = new SolidBrush(Color.Black);
        float lineSpacing = 0.5f;

        SizeF size = g.MeasureString("A", font);

        float pos = 0.0f;
        for (int i = 0; i < text.Length; ++i)
        {
            string charToDraw = new string(text, 1);
            g.DrawString(charToDraw, font, brush, pos, 0.0f);
            SizeF sizeChar = g.MeasureString(charToDraw, font);
            pos += sizeChar.Width + size.Width * lineSpacing;
        }
    } 

它给了我错误:'string.string(char, int)' 的最佳重载匹配在此代码“ string charToDraw = new string(text, 1); ”上有一些无效参数。

4

1 回答 1

0

这是因为您将字符串作为第一个参数传递,并且没有将字符串作为第一个参数的重载字符串构造函数。

如果您尝试逐字符访问字符串,请尝试:

for (int i = 0; i < text.Length; ++i)
{
    char charToDraw = text[i];

但是,如果您尝试将其逐个字符地传递给 DrawString(),您将需要单个字符的字符串版本,因此这样做会更容易:

for (int i = 0; i < text.Length; ++i)
{
    string charToDraw = text.SubString(i, 1);
于 2013-05-23T16:50:40.483 回答