Pregunta

Creo que me estoy perdiendo algo fundamental. Por favor, dime qué es, si puedes.

He desarrollado una pequeña aplicación WinForms C ++ usando VS2008. Entonces se construye con .NET 3.5 SP1. Mi caja de desarrollo es Win7, si eso importa.

El valor predeterminado de la propiedad de USECOMPACTIBLEXTRENDERINGE en WinForms Controls es falso en esta versión de VStudio. Y esto no debería importarme, no lo creo. No tengo ningún texto o controles dibujados a medida.

La aplicación se ve bien en mi caja Win7.

Si lo empaqué (arrastrando .NET 3.5) e instalo en uno de nuestros escritorios WinXP, los botones y las etiquetas no se ven bien; El texto se corta en ellos.

Si configuro USECOMPATIBLETEXTRENDERING en verdadero y luego lo ejecuto en los cuadros XP, el texto encaja en los botones y etiquetas.

Mi pregunta es: ¿por qué? La instalación coloca .NET 3.5 en los cuadros XP, por lo que la aplicación debería poder encontrar y usar la versión correcta de Winforms, ¿verdad?

Debo tener en cuenta que antes de poner mi aplicación + .NET 3.5 en estos cuadros, no tienen .NET en absoluto. No reciben actualizaciones automáticas de Microsoft; Nuestro tipo de TI compre los parches y las actualizaciones.

Este tipo de cosas han sucedido antes con las aplicaciones que creo ... se ven/funcionan muy bien en las máquinas de ingeniería, porque las mantenemos y en su mayoría tienen cosas actualizadas. Cuando se ejecutan en las cajas corporativas, generalmente no se ejecutan y necesitan el vCredist instalado.

Volver a la pregunta en cuestión: el texto se ve mejor con el USECompatIBLETEXTRENDERIRSE establecido en False, por lo que prefiero mantenerlo así, si puedo. Me gustaría entender lo que podría faltar en esas cajas XP que están haciendo que el texto no se ajuste.

Gracias

S

¿Fue útil?

Solución

It is probably a scaling problem, the XP machine may have a different video adapter DPI setting or a different system font size. Scaling is affected by the form's AutoScaleMode and whether or not they "inherit" the container control's Font property. Which it does if the Font property isn't bold in the Properties window.

One quick way to check if scaling works property in your Form:

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

That scales it up. It probably gets scaled down on the XP machine, use 96/125.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top