Почему Usecompatibletextrendering нужно здесь?
-
26-09-2019 - |
Вопрос
Я думаю, что я скучаю с чем-то фундаментальным. Пожалуйста, скажите мне, что это такое, если сможешь.
Я разработал небольшое приложение Winforms C ++, используя VS2008. Так что он построен с использованием .NET 3.5 SP1. Моя коробка для развития - Win7, если это имеет значение.
Значение по умолчанию имущество Usecompatibletextrendering в управлении WinForms является false в этой версии VStudio. И это не должно иметь значение для меня, я не думаю. У меня нет никаких настроек текста или контроля.
Приложение выглядит хорошо работает на моей коробке Win7.
Если я упакую это (перетаскивая вдоль .NET 3.5) и установите его на один из наших настольных компьютеров WinXP, кнопки и этикетки не выглядят хорошо; Текст отрублен в них.
Если я устанавливаю USECompatibletextrendering to true, а затем запустите его на полях XP, текст вписывается в кнопки и метки.
Мой вопрос: почему? Установка ставит .NET 3.5 на ящики XP, поэтому приложение должно быть в состоянии найти и использовать правильную версию WinForms, верно?
Я должен отметить, что, прежде чем положить свое приложение + .NET 3.5 на этих коробках, у них нет .NET вообще. Они не получают автоматические обновления Microsoft; Наш это парень ворота патчей и обновления.
Такая вещь произошла раньше с приложениями, которые я создаю .. Они выглядят / отлично выглядят на машинах инженерных машин, потому что мы поддерживаем их, и в основном они имеют актуальные вещи. Когда они бегают на корпоративных ящиках, они обычно не бегают и нуждаются в установленном видеоматериале. Несомненно
Вернуться к вопросу под рукой: текст выглядит лучше с Usecompatibletextrendering, установленный на ложь, поэтому я бы предпочел держать его таким образом, если смогу. Я хотел бы понять, что может отсутствовать на этих коробках XP, которые делают текст, не подходящий.
Спасибо
С
Решение
Вероятно, это проблема масштабирования, машина XP может иметь разные настройки DPI видеодателя или другой размер шрифта системы. Масштабирование зависит от автоскалемода формы и независимо от того, наследует свойство шрифта управления контейнерами. Что это делает, если свойство шрифта не смело в окне свойств.
Один быстрый способ проверить, если масштабирование работает недвижимость в вашей форме:
protected:
virtual void OnLoad(EventArgs^ e) override {
this->Font = gcnew System::Drawing::Font(this->Font->FontFamily,
this->Font->SizeInPoints * 125 / 96);
}
Что масштабирует это. Вероятно, он увеличивается на машине XP, используйте 96/125.