我有一些代码:
string text = "Some text\t with tabs\t here!";
string spaces = "";
for (int i = 0; i < 4; i++)
{
spaces += " ";
}
text = text.Replace(@"\t", spaces);
我用四个空格替换所有标签,然后尝试绘制文字:
graphics.DrawString(text, font, new SolidBrush(Color.Black), offsetX, offsetY);
但是文字在两个单词之间只有一个空格。其他空间被删除。 如何用所有空格绘制文本?
答案 0 :(得分:2)
您的字符串或其中没有一个必须是逐字字符串。逐字字符串(即@“字符串”)表示在到达下一个引号字符之前不对字符应用任何解释。
因此请尝试:
string text = "Some text\t with tabs\t here!";
...
text = text.Replace("\t", spaces);
或者这个:
string text = @"Some text\t with tabs\t here!";
...
text = text.Replace(@"\t", spaces);
答案 1 :(得分:2)
请改用 TextRenderer.DrawText 。这是自.NET 2.0以来Windows.Forms也使用的内容,除非打开UseCompatibleTextRendering。
%12th%main%
%100 feet%
%12th%main%
%12th%main%
%12th%main%
%100 feet%
答案 2 :(得分:1)
问题是你的字体,有些字体是等宽的(所有字母都有相同的空间,包括空格)而其他字体没有(每个字母不同的空格,例如“i”的空间比“M”少)。请将您的字体更改为等宽字体。
您看到您的文字似乎有单个空格,因为非等宽字体中的空格比等宽字体短。
您可以阅读有关monospaced fonts in Wikipedia的更多信息。