J'ai remarqué dans WPF, la taille de police par défaut de 12 points est à peu près équivalente à 9 points dans les applications "normales" (par exemple WordPad), 10 pt dans WPF est à peu près 7 pt standard, et quand j'essaie de faire correspondre la taille de police par défaut de 10 pt dans WordPad dans WPF, j'ai trouvé 13 est le plus proche. Tout d'abord, pourquoi WPF utilise-t-il des tailles de police non standard aussi bizarres, et deuxièmement, existe-t-il un moyen fiable de convertir les deux? La raison pour laquelle je demande est que je veux construire un menu de taille de police avec des tailles de police "standard" de 9, 10, 12, 14, 16, 18, 24, 36, 48, mais je suis sûr que si je utiliser ces valeurs réelles, ils vont être sauvagement.Conversion entre taille de police WPF et taille de police "standard"
22
A
Répondre
30
WPF utilise les pixels comme unité par défaut pour font size. La correspondance entre points (probablement ce que vous voulez dire quand vous dites la taille de la police "standard") et pixels est: 1 pt = (96/72) px
Cela nous donne une fonction de conversion simple:
public static double PointsToPixels(double points)
{
return points*(96.0/72.0);
}
Voir this question pour plus de détails.
19
Une autre méthode pour la conversion si vous allez du point à WPF double est d'utiliser la classe System.Windows.FontSizeConverter:
double sizeForWpf = (double) new FontSizeConverter().ConvertFrom("10pt");
+3
Maintenant, comment convertir ** en points ** le sizeForWpf? – moldovanu
Merci! Cela semble être la clé manquante. Je vois aussi que je peux spécifier des tailles de police avec un "double qualifié" et spécifier des points comme unité, mais je me demande comment faire cela à partir du code. – devios1
À noter que la documentation WPF confond considérablement la matière en faisant référence à ces pixels de 1/96 de pouce comme des «unités em», ce qui est complètement différent de la signification typographique de «em» (utilisé avec [CSS] (http: // www .w3.org/TR/CSS21/syndata.html # valeur-def-longueur)) –