【问题标题】:Visual Studio 2010: text becoming blurry when scrollingVisual Studio 2010:滚动时文本变得模糊
【发布时间】:2010-11-17 15:45:25
【问题描述】:

我在使用 Visual Studio 2010 时遇到问题。例如,在属性窗口中向下/向上滚动时会发生这种情况。它的内容在几毫秒内变得模糊。

当我使用“ScrollViewer”时,它也发生在我自己的 WPF 应用程序中。

有人知道怎么解决吗?

【问题讨论】:

  • 也许有一天我们的办公桌上都会有一台 300 DPI 的显示器。您的 WPF 程序将为此做好准备。

标签: wpf visual-studio-2010


【解决方案1】:

在您自己的 WPF 应用程序中,可以通过使用自定义 IScrollInfo 实现将滚动偏移限制为设备像素。这很容易做到。请注意,您必须get the actual screen DPI 才能进行计算。

在 Visual Studio 中,没有“合理”的方法来修复它。显然您可以破解 VS.NET 可执行文件以包含您自己的 IScrollInfo 实现,但我不推荐它!

【讨论】:

  • 在我的情况下(我需要“控件”滚动而不是文本滚动),使用 ScrollViewer 属性 CanContentScroll="True" 启用 IScrollInfo 功能(pageUp、pageDown、lineUp、lineDown)和模糊消失。当我需要滚动文本时,我会研究您的建议(看起来很棒!)。谢谢你的线索!
【解决方案2】:

避免该问题的唯一方法是完全避免 WPF。尽管它在某些方面很好,但它仍然1 无法获得完全正确的文本。是的,WPF 是 Visual Studio 中问题的根源——从 VS 2010 开始,他们将其中的一部分切换为使用 WPF。

1“仍然”,在这种情况下指的是它曾经更糟糕的事实。从 .NET 4.0 开始,他们已经修复了一些最严重的问题,但是(如您所见)仍然不是很正确。

【讨论】:

  • 感谢您的回答。我希望微软有一天能解决它……我喜欢 WPF,但这个问题太烦人了。
  • 实际上,只要您避免允许部分像素滚动偏移的 WPF 功能,WPF 4 在文本滚动方面做得很好。不幸的是,默认的 ScrollViewer 确实允许任意偏移。因此,在重新计算文本对齐时,您会得到几毫秒的模糊。您可以使用 IScrollInfo 覆盖部分像素变换并消除模糊。有关更多信息,请参阅我的答案。
【解决方案3】:

我遇到了同样的问题。实际上有一种方法可以在滚动时解决这个问题。 只需将这 3 个属性添加到您的内容控件:

SnapsToDevicePixels="True" UseLayoutRounding="True"  TextOptions.TextFormattingMode="Display"

请注意,文本在滚动时可能看起来不像应有的那么平滑(但一旦您停止滚动,就会立即消失)

【讨论】:

    猜你喜欢
    • 2011-02-09
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多