Преобразование между размером шрифта WPF и «стандартным» размером шрифта - PullRequest
26 голосов
/ 10 августа 2010

Я заметил в WPF, что размер шрифта по умолчанию в 12 пунктов примерно эквивалентен 9 пунктам в «нормальных» приложениях (например, WordPad), 10 пунктов в WPF - это примерно 7 пунктов, и когда я пытаюсь соответствовать по умолчанию размер шрифта 10 пт в WordPad в WPF, я обнаружил, что 13 является ближайшим.

Во-первых, почему WPF использует такие причудливые нестандартные размеры шрифтов, а во-вторых, существует ли надежный способ конвертации между ними?

Причина, по которой я спрашиваю, состоит в том, что я хочу создать меню размера шрифта со «стандартными» размерами шрифта 9, 10, 12, 14, 16, 18, 24, 36, 48, но я почти уверен, что использую те фактические значения, которые они будут дико отключены.

Ответы [ 2 ]

36 голосов
/ 10 августа 2010

WPF использует пиксели в качестве единицы по умолчанию для размер шрифта . Соотношение между точками (вероятно, вы подразумеваете, когда говорите «стандартный» размер шрифта) и пикселями: 1 pt = (96/72) px

Это дает нам простую функцию преобразования:

public static double PointsToPixels(double points)
{
    return points*(96.0/72.0);
}

См. этот вопрос для более подробной информации.

20 голосов
/ 03 августа 2011

Другой способ преобразования, если вы переходите от двойного к WPF, - это использовать класс System.Windows.FontSizeConverter:

double sizeForWpf = (double) new FontSizeConverter().ConvertFrom("10pt");
...