Tag: textrenderer

TextRenderer.MeasureText()和文本框最大文本长度

我有一个长串(约100k字符)。 我需要知道这个字符串的长度。 我打电话 Size s = TextRenderer.MeasureText(graphics, text, font); 但它返回宽度等于7.只有当文本长度<= 43679时,它才会返回正确的值! 此外,如果我在文本框中插入文本,文本在文本框中不可见! 我可以用鼠标选择文本,通过“Ctrl + C”复制,但文本不可见。 MaxLength属性大于文本长度。 我查看了msdn,但没有找到有关MeasureText和TextBox中使用的最大文本长度的任何信息。 我在哪里可以找到关于此的文档? 有没有办法增加最大文本长度? 这些值取决于操作系统和计算机性能吗?

为什么TextRenderer.MeasureText没有正常工作?

我想在给定一定宽度的可用canvas的情况下测量文本的高度。 我传入的文本很长,我知道会包装。 为此,我呼吁以下内容: using System.Windows.Forms; … string text = “Really really long text that is sure to wrap…”; Font font = new Font(“Arial”, 14); Size canvas = new Size(1100, 850); Size size = TextRenderer.MeasureText(text, font, canvas); 无论我为canvas传递什么,它总是返回14 size.Height 。 size.Height 。 我错过了一些简单的事吗?

Bitmap与OnPaintBackground中的TextRenderer.DrawText

如果我使用OnPaintBackground中提供的Graphics对象使用TextRenderer.DrawText(),我的文本看起来很完美。 如果我创建自己的Bitmap并使用从我的Bitmap获得的Graphics对象,我的文本看起来很糟糕。 看起来它使用黑色来消除锯齿,而不是位图的背景颜色。 如果我使用Graphics.DrawString(),我可以避免这个问题,但这种方法有可怕的字距调整问题。 我该怎么办? 如何使用Bitmap的内容正确地将TextRenderer.DrawText()转换为反别名? 看起来很可怕: Bitmap bmp = new Bitmap(100, 100, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(bmp)) { g.Clear(Color.Red); TextFormatFlags tf = TextFormatFlags.Left; TextRenderer.DrawText(g, @”C:\Development\Testing\blag”, font, clip, Color.White, Color.Transparent, tf); } 看起来不错,但我想将其渲染到位图上,而不是渲染到控件的表面上: protected override void OnPaintBackground(PaintEventArgs e) { e.Graphics.Clear(Color.Red); TextFormatFlags tf = TextFormatFlags.Left; TextRenderer.DrawText(e.Graphics, @”C:\Development\Testing\blag”, font, clip, Color.White, Color.Transparent, tf); } 有什么不同?

TextRenderer.MeasureText结果的准确性

调用TextRenderer.MeasureText如下: TextRenderer.MeasureText(myControl.Text, myControl.Font); 并将结果与​​控件的大小进行比较,以检查文本是否适合。 结果有时是不正确的。 观察了以下两个问题: 通常,当Label设置为AutoSize时,TextRenderer将报告宽度比Control的自动大小宽度宽1个像素的宽度。 假负面,其中TextRenderer报告的宽度小于控件的宽度,但文本仍然被切断。 这发生在“Estacióndetrabajo” – 不确定重音是否会以某种方式影响宽度计算? 有没有办法提高MeasureText方法的准确性? 我应该调用接受设备上下文和/或格式标志的覆盖之一吗?