Pergunta

Acho que estou perdendo algo fundamental. Por favor, diga -me o que é, se puder.

Eu desenvolvi um pequeno aplicativo C ++ WinForms usando o VS2008. Por isso é construído usando .NET 3.5 SP1. Minha caixa de desenvolvimento é Win7, se isso importa.

O valor padrão da propriedade UseCompatibleTextrendering nos controles WinForms é falsa nesta versão do vStudio. E isso não deve importar para mim, eu não acho. Não tenho nenhum texto ou controle personalizado.

O aplicativo parece bom em execução na minha caixa Win7.

Se eu o empacotar (arrastar o .NET 3.5) e instalá -lo em um dos nossos desktops Winxp, os botões e os rótulos não parecem bons; O texto é cortado neles.

Se eu definir usecompatibletextrendering como true e executá -lo nas caixas XP, o texto se encaixa nos botões e etiquetas.

Minha pergunta é: por quê? A instalação coloca o .NET 3.5 nas caixas XP, para que o aplicativo possa encontrar e usar a versão correta do WinForms, certo?

Devo observar que, antes de colocar meu aplicativo + .NET 3.5 nessas caixas, elas não têm nada .NET. Eles não recebem atualizações automáticas da Microsoft; Nosso cara de TI gates os remendos e atualizações.

Esse tipo de coisa já aconteceu antes com os aplicativos que eu crio. Eles parecem/funcionam muito bem nas máquinas de engenharia, porque as mantemos e elas geralmente têm coisas atualizadas. Quando são executados nas caixas corporativas, geralmente não correm e precisam do vcredist instalado.

Voltando à pergunta em questão: o texto fica melhor com o usecompatibletextrendering definido como false, então prefiro mantê -lo dessa maneira, se puder. Eu gostaria de entender o que pode estar faltando nas caixas XP que estão fazendo o texto não ser ajustado.

Obrigado

S

Foi útil?

Solução

Provavelmente é um problema de escala, a máquina XP pode ter uma configuração DPI de adaptador de vídeo diferente ou um tamanho diferente da fonte do sistema. A escala é afetada pelo modo automotivo do formulário e se eles "herdam" a propriedade Fonte do Control Control. O que faz se a propriedade da fonte não estiver em negrito na janela Propriedades.

Uma maneira rápida de verificar se o Scaling Works Property em seu formulário:

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

Isso escala. Provavelmente é reduzido na máquina XP, use 96/125.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top