У меня есть приложение ac #, которое выполняет рендеринг текста, что-то наравне с простым текстовым редактором wysiwyg.
Я использую TextRenderer.DrawText для визуализации текста на экране и GetTextExtentPoint32 для измерения текста, чтобы яМожно расположить разные стили / размеры шрифта в одной строке.
В Vista это все работает нормально.В XP, однако, Arial отображает по-разному, некоторые символы, такие как «o» и «b», занимают больше ширины, чем в Vista.GetTextExtentPoint32, кажется, измеряет строку, как это было бы в Vista, хотя и с меньшей шириной.Конечным результатом является то, что время от времени текст будет перекрывать текст, предшествующий ему, потому что предыдущий текст измеряется меньше, чем он есть на экране.
Кроме того, мой код рендеринга текста имитирует текст ieрендеринг точно (только для простого форматирования и только на английском языке), то есть рендеринг текста, кажется, согласован между vista и xp - вот как я заметил изменение в размере разных символов.
У всех есть идеи по поводу того, что происходитна?
Короче говоря, TextRenderer.DrawText и GetTextExtentPoint32 не совпадают в xp для Arial.DrawText, кажется, рисует определенные символы больше и / или меньше, чем в Vista, но GetTextExtentPoint32, похоже, измеряет текст так же, как в Vista (что, похоже, соответствует отображению текста, например, в xp и vista).Надеюсь, что это имеет смысл.
Примечание. К сожалению, TextRenderer.MeasureString недостаточно быстр и точен для удовлетворения моих требований.Я попытался использовать это и должен был вырвать это.