Почему UseCompatibleTextRendering необходим здесь?

Я думаю, что пропускаю что-то фундаментальное. Скажите мне, каково это, если Вы можете.

Я разработал немного C++ приложение WinForms с помощью VS2008. Таким образом, это создается с помощью.NET 3,5 SP1. Мое поле разработки является Win7, если это имеет значение.

Значение по умолчанию свойства UseCompatibleTextRendering в средствах управления WinForms является ложью в этой версии VStudio. И это не должно иметь значения для меня, я не думаю. У меня нет пользовательски оттянутого текста или средств управления.

Приложение смотрит хорошая работа моего поля Win7.

Если я упаковываю его (тащащий.NET 3.5) и устанавливаю его на одном из наших рабочих столов WinXP, кнопки и маркировки не выглядят хорошими; текст обрублен в них.

Если я установил UseCompatibleTextRendering на истинный и затем выполнил его на полях XP, текст вписывается в кнопки и маркировки.

Мой вопрос: Почему? Установка помещает.Net 3.5 на поля XP, таким образом, приложение должно смочь найти и использовать правильную версию WinForms, правильно?

Я должен отметить, что, прежде чем я поместил свое приложение +.NET 3.5 на этих полях, у них нет.NET вообще. Они не получают автоматические обновления Microsoft; наш парень IT пропускает патчи и обновления.

[Этот вид вещи произошел, прежде с приложениями я создаю.. они смотрят/работают великими на Технических машинах, потому что мы поддерживаем их, и у них главным образом есть актуальный материал. Когда они выполняются на корпоративных полях, они обычно не выполняют и нуждаются в установленном VCredist.]

Назад к вопросу под рукой: текст выглядит лучше с набором UseCompatibleTextRendering ко лжи, таким образом, я сохранил бы это тем путем, если я могу. Я хотел бы понять то, что могло бы отсутствовать на тех полях XP, который делает текст не пригодным.

Спасибо

S

1
задан HotOil 10 June 2010 в 19:57
поделиться

1 ответ

Вероятно, это проблема масштабирования, машина XP может иметь другую настройку DPI видеоадаптера или другой размер системного шрифта. На масштабирование влияет AutoScaleMode формы и то, «наследуют» ли они свойство Font контейнерного элемента управления. Что и происходит, если свойство Font не выделено полужирным шрифтом в окне Свойства.

Один из быстрых способов проверить, работает ли масштабирование свойство в вашей форме:

protected:
    virtual void OnLoad(EventArgs^ e) override {
        this->Font = gcnew System::Drawing::Font(this->Font->FontFamily, 
            this->Font->SizeInPoints * 125 / 96);
    }

Это масштабирует его. Вероятно, он будет уменьшен на машине XP, используйте 96/125.

2
ответ дан 2 September 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: