.net - TextRenderer 不绘制长字符串

标签 .net winforms gdi+ textrenderer

看看这个示例:

public partial class Form1 : Form
{
    private static string myString = null;

    private const int MAX_TEXT = 5460;

    public Form1()
    {
        InitializeComponent();

        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < MAX_TEXT; i++)
        {
            builder.Append('a');
        }

        myString = builder.ToString();

        this.Paint += Form1_Paint;
    }

    void Form1_Paint(object sender, PaintEventArgs e)
    {
        TextRenderer.DrawText(
            e.Graphics,
            myString,
            this.Font,
            new Point(10, 30),
            Color.Black);
    }
}

当我将 MAX_TEXT 设置为 5461 时,不会绘制字符串。您是否知道 native 机制是否有绘制文本的限制,是否/或我可以设置选项以使其正常工作?

最佳答案

我认为您遇到了 TextRenderer 类的限制,我认为该类在幕后调用了 DrawTextEx API 函数。如果您尝试将 builder.ToString() 结果放入 TextBox,它也不会显示。

如果由于某种原因您需要打印那么长的字符串,则必须恢复到 DrawString 方法:

e.Graphics.DrawString(myString, this.Font, Brushes.Black, new Point(10, 30));

关于.net - TextRenderer 不绘制长字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17525640/

相关文章:

c# - 从窗体移植到 WPF

c# - 如何在 WinForm 和 C# (Visual Studio 2015) 中使用 .Net Native?

c# - .Net Graphicspath 包络失真

c++ - StretchBlt 和过滤 alpha channel

c# - 无论如何在控制台程序中获取图形对象?

.net - 将键码转换为相关的显示字符

c# - 控件中的多个 MouseHover 事件

c# - 如何以这种方式调整 WPF 网格面板的大小?

.net - 是否有类似的命令,如 .call for .NET?

c# - 如何使用 OleDbConnection 从 Excel 文件检索数据