Perché è necessario USECOMPATIBLETEXTRENDERING QUI?
-
26-09-2019 - |
Domanda
Penso che mi manchi qualcosa di fondamentale. Per favore dimmi cos'è, se puoi.
Ho sviluppato una piccola app C ++ Winforms utilizzando VS2008. Quindi è costruito utilizzando .NET 3.5 SP1. La mia scatola di sviluppo è Win7, se questo è importante.
Il valore predefinito della proprietà UseCompatibleTextrending nei controlli WinForms è falso in questa versione di VStudio. E questo non dovrebbe importare per me, non credo. Non ho alcun testo o controlli personalizzati.
L'app ha un bell'aspetto in esecuzione sulla mia scatola Win7.
Se lo confetto (trascinando lungo .NET 3.5) e installo su uno dei nostri desktop WinXP, i pulsanti e le etichette non hanno un bell'aspetto; Il testo è tagliato in loro.
Se ho impostato USECOMPATIBLETEXSTRENDERing su True e quindi eseguilo sulle caselle XP, il testo si adatta ai pulsanti e alle etichette.
La mia domanda è: perché? L'installazione mette .NET 3.5 nelle caselle XP, quindi l'app dovrebbe essere in grado di trovare e utilizzare la versione giusta di Winforms, giusto?
Dovrei notare che prima di mettere la mia app + .NET 3.5 su queste caselle, non hanno affatto .NET. Non ricevono aggiornamenti automatici Microsoft; Il nostro ragazzo IT sta recuperando le patch e gli aggiornamenti.
Questo genere di cose è successo prima con le app che creo .. sembrano/lavorano alla grande sulle macchine ingegneristiche, perché ne manteniamo e hanno principalmente cose aggiornate. Quando vengono eseguiti sulle scatole aziendali, di solito non funzionano e hanno bisogno di installazione del vcredista. "
Tornando alla domanda a portata di mano: il testo sembra migliore con l'USECOMPATIBLETEXTRENDERSING IN FALSE, quindi preferirei tenerlo così, se posso. Vorrei capire cosa potrebbe mancare in quelle caselle XP che non si adattano al testo.
Grazie
S
Soluzione
Probabilmente è un problema di ridimensionamento, la macchina XP può avere un'impostazione DPI di adattatore video diversa o una dimensione del carattere di sistema diversa. Il ridimensionamento è influenzato dal modello automatico della forma e se "ereditano o meno la proprietà del carattere del controllo del contenitore. Che fa se la proprietà del carattere non è audace nella finestra Proprietà.
Un modo rapido per verificare se il ridimensionamento funziona nella proprietà nel modulo:
protected:
virtual void OnLoad(EventArgs^ e) override {
this->Font = gcnew System::Drawing::Font(this->Font->FontFamily,
this->Font->SizeInPoints * 125 / 96);
}
Questo lo ridimensiona. Probabilmente viene ridimensionato sulla macchina XP, usa 96/125.