【问题标题】:.NET: drawing text hangs - FormattedText bug?.NET:绘图文本挂起 - FormattedText 错误?
【发布时间】:2010-08-17 15:14:14
【问题描述】:

一位客户报告说,当他在他的一台计算机上运行我们的软件时,它会挂起。我们将问题缩小到使用 FormattedText 渲染文本,并编写了一个简单的应用程序供他尝试,它只是渲染一些具有不同字体参数的文本 - 这也会挂起。

以下是实际绘制文本的代码:

Typeface typeface = new Typeface(m_Font, m_FontStyle, m_FontWeight, FontStretches.Normal);
FormattedText ftext = new FormattedText(m_Text, new CultureInfo("en-US"), FlowDirection.LeftToRight, typeface, m_FontSize, m_FontColor);

ftext.TextAlignment = CenterText ? TextAlignment.Center : TextAlignment.Left;

if (m_DrawOutline)
{
    Geometry geom = ftext.BuildGeometry(CenterText ? new Point(ftext.Width, 0) : new Point());
    dc.DrawGeometry(m_FontColor, DrawOutline ? new Pen(m_OutlineColor, m_OutlineWidth) : null, geom);
}
else
    dc.DrawText(ftext, CenterText ? new Point(ftext.Width, 0) : new Point());

无论使用什么字体和文本参数,只要调用 ftext.BuildGeometry、dx.DrawText 方法或 ftext.Width 属性,程序就会停止响应。这只发生在一台运行 Windows 7 的触摸屏笔记本电脑(不确定是否相关)上。我们已经尝试重新安装 .NET Framework,但这没有帮助。

有没有人遇到过类似的问题?任何想法如何解决、解决或至少找出更多关于此问题的原因是什么?

谢谢。

【问题讨论】:

  • 您是否尝试过更新/降级显卡驱动程序?要确定究竟是什么罪魁祸首从调试器或进程资源管理器中获取堆栈。如果您最终挂在驱动程序中,它可能是硬件或软件,但无论如何您都无法直接解决。如果它在 DirectX 或内核中......我不知道是否可以通过 MSDN 联系 micsosoft 支持。

标签: c# .net wpf


【解决方案1】:

从来没有亲自遇到过这个问题,我在家里使用 Windows 7。但是,如果它只在一台机器上,则可以肯定问题与软件无关。我会尝试的第一步是下载最新的视频显示驱动程序并安装它们。如果它仍然给您带来问题,请尝试启动到安全模式,看看它是否会运行。

【讨论】:

  • 感谢您的回复。我们已经尝试安装最新的图形驱动程序(它是 ATI 卡),但这并没有帮助……我会让客户尝试安全模式。如果它确实在安全模式下工作,它会告诉我们什么?
  • 如果它确实在安全模式下工作,那么它告诉我安装的驱动程序或软件应用程序干扰了程序的运行。也许还需要进行病毒扫描?
【解决方案2】:

由于演示字体缓存损坏,我遇到了这个问题。

停止字体缓存服务,删除文件 %systemdrive%\Documents and Settings\LocalService\Local Settings\Application Data\FontCache3.0.0.0.dat (xp) 并重启。

详情http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7cc032c1-5f4d-4518-adc6-f53afd051e6b

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2010-09-06
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多