.NET: рисование текста зависает - ошибка FormattedText? - PullRequest
0 голосов
/ 17 августа 2010

Клиент сообщил, что наше программное обеспечение зависает, когда он запускает его на одном из своих компьютеров. Мы сузили проблему до рендеринга текста с помощью 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, но это не помогло.

Кто-нибудь сталкивался с подобной проблемой? Любые идеи, как исправить, обойти или хотя бы узнать больше, в чем причина этой проблемы?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Эта проблема возникла из-за поврежденного кэша шрифтов презентации.

Остановите службу кэширования шрифтов, удалите файл% 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

1 голос
/ 17 августа 2010

Никогда лично не сталкивался с этой проблемой, и я использую Windows 7 дома.Однако, если это только на одной машине, можно с уверенностью сказать, что проблема не связана с программным обеспечением.Первый шаг, который я бы попробовал, - это загрузить самые последние драйверы видеоадаптера и установить их.Если проблема не устранена, попробуйте загрузиться в безопасном режиме и посмотрите, будет ли он работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...