WPF - 多行文本框在输入长文本时会变得模糊

8

我有一个文本框,当我输入内容时,它会垂直增长。不幸的是,当我输入很长的文本(例如三行文本)时,其中的一部分会变得模糊。更重要的是,当我防止它垂直增长并使其水平增长时,它可以正常工作 - 文本就变得清晰了。

我尝试过以下方法:

UseLayoutRounding = true;
RenderOptions.TextRenderingMode = "ClearType";

请忘记关于

TextOptions.TextFormattingMode = "Display"

必须是"理想的"。

查看截图:

输入图像描述 输入图像描述


4
请查看这个答案:WPF模糊字体问题-解决方案 - Claudio P
1
似乎对我来说什么都不起作用。 - Michal_Drwal
8
请提供足够的代码以重现问题。这个问题是否特定于某个版本的Windows、.net版本、软件或硬件渲染、视频卡等? - Kory Gill
如果你想保持理想状态,可能并没有一个解决方案。你可以尝试所有的组合(TextRenderingMode、TextFormattingMode、ClearTypeHint、SnapToDevicePixels),文本大小也很重要。这篇“根”文章已经说得很清楚了:http://blogs.msdn.com/b/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx。 - Simon Mourier
3个回答

2

禁用亚像素渲染和抗锯齿。尝试:

SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);

1

尝试轻微增加文本框的字体大小(如果使用像素,请使用1/4s)。或者,以类似的方式略微更改行高。我认为问题可能是由于WPF对子像素的解释不正确,可能在错误的位置进行四舍五入。


1

既然您提到:

我有一个文本框,当输入时会垂直增长

我猜想它是一个从 TextBox 派生的 CustomControl,并采用自定义渲染来垂直增长,而不是使用内置的文本换行能力。

由于我无法通过您提供的参数(使用 Ideal)在库存的 TextBox 上重现您的问题(我已经在 VS 2013 上检查了 Framework 4.0 到 4.6),可能是因为您的自定义代码导致了模糊。

顺便问一下,没有使用内置的换行吗?

TextWrapping="Wrap"

也许您应该包含更多的代码和细节,例如框架版本、Visual Studio 版本、操作系统版本等等。
同样,指定您的“垂直增长文本框”的版本。类似于 this 这样的东西吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接