Frage

Ich denke, mir fehlt etwas Grundlegendes. Bitte sagen Sie mir, was es ist, wenn Sie können.

Ich habe mit VS2008 eine kleine C ++ - WinForms -App entwickelt. Es wird also mit .NET 3.5 SP1 erstellt. Meine Entwicklungsbox ist Win7, wenn das wichtig ist.

Der Standardwert der UseCompatiblETExtrendering -Eigenschaft in WinForms Controls ist in dieser Version von Vstudio falsch. Und das sollte mir keine Rolle spielen, denke ich nicht. Ich habe keine benutzerdefinierten Text oder Steuerelemente.

Die App sieht in meiner Win7 -Box gut aus.

Wenn ich es verpackt (mit .NET 3.5 mitzüglich) und auf einem unserer WinXP -Desktops installieren, sehen die Tasten und Etiketten nicht gut aus. Der Text ist in ihnen abgehackt.

Wenn ich UseCompatiBlETExtrendiering auf true einstellte und dann auf den XP -Feldern auszuführen ist, passt der Text in die Schaltflächen und Beschriftungen.

Meine Frage ist: Warum? Die Installation stellt .NET 3.5 in die XP -Felder ein, sodass die App in der Lage sein sollte, die richtige Version von WinForms zu finden und zu verwenden, oder?

Ich sollte beachten, dass sie, bevor ich meine App + .NET 3.5 auf diese Boxen einsetzte, überhaupt keine .NET haben. Sie erhalten keine automatischen Microsoft -Updates. Unsere It Guy Gates die Patches und Upgrades.

So etwas ist zuvor mit Apps passiert, die ich erstelle. Sie sehen auf den technischen Maschinen hervorragend aus, weil wir diese unterhalten und meistens aktuelle Dinge haben. Wenn sie in den Unternehmensboxen betrieben werden, laufen sie normalerweise nicht und müssen den Vcredisten installiert.

Zurück zur Frage: Der Text sieht besser mit dem UseCompatiblEtextrendrendering auf false aus, also würde ich es lieber so halten, wenn ich kann. Ich würde gerne verstehen, was in den XP -Feldern fehlt, die den Text nicht passen.

Vielen Dank

S

War es hilfreich?

Lösung

Es ist wahrscheinlich ein Skalierungsproblem, die XP -Maschine kann eine andere Videoadapter -DPI -Einstellung oder eine andere Systemschriftgröße haben. Die Skalierung wird von der Autoscalemode des Formulars beeinflusst und ob sie die Schriftart des Containerkontrolls "erben". Was es tut, wenn die Schriftart nicht im Eigenschaftenfenster fett ist.

Eine schnelle Möglichkeit, zu überprüfen, ob Skalierung in Ihrem Formular Eigenschaften funktioniert:

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

Das skaliert es. Es wird wahrscheinlich auf der XP -Maschine skaliert, verwenden Sie 96/125.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top