Вопрос

Я думаю, что я скучаю с чем-то фундаментальным. Пожалуйста, скажите мне, что это такое, если сможешь.

Я разработал небольшое приложение 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top