【发布时间】: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 支持。