2010-08-09 17 views
22

Zauważyłem w WPF, domyślny rozmiar czcionki wynoszący 12 punktów jest mniej więcej równy 9 punktom w "normalnych" aplikacjach (np. WordPad), 10 pt w WPF jest z grubsza Standard 7 pt i kiedy próbuję dopasować domyślny rozmiar czcionki 10 pkt w WordPadzie w WPF, odkryłem, że 13 jest najbliższe.Konwertowanie rozmiaru czcionki WPF na "standardowy" rozmiar czcionki

Po pierwsze, dlaczego WPF używa tak dziwacznych niestandardowych rozmiarów czcionek, a po drugie, czy istnieje niezawodny sposób na konwersję między nimi?

Moim powodem do zadawania pytań jest to, że chcę zbudować menu rozmiaru czcionki o "standardowych" rozmiarach czcionki 9, 10, 12, 14, 16, 18, 24, 36, 48, ale jestem prawie pewny, że używaj tych rzeczywistych wartości, które będą dziko zdejmować.

Odpowiedz

30

WPF używa pikseli jako domyślnej jednostki dla font size. Odwzorowanie między points (prawdopodobnie co masz na myśli mówiąc „standardowy” rozmiar czcionki) i pikseli wynosi: 1 pkt = (96/72) px

To daje nam prostą funkcję konwersji:

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

Aby uzyskać więcej informacji, patrz this question.

+0

Dzięki! To wygląda na brakujący klucz. Widzę również, że mogę określić rozmiary czcionek z "kwalifikowanym podwójnym" i określić punkty jako jednostkę, ale zastanawiam się, jak to zrobić z kodu. – devios1

+1

Warto zwrócić uwagę, że dokumentacja WPF dość poważnie myli sprawę, odwołując się do tych 1/96 cala pikseli jako "jednostek em", co całkowicie różni się od typograficznego znaczenia "em" (jak użyto w [CSS] (http: // www. .w3.org/TR/CSS21/syndata.html # value-def-length)) –

19

Inna metoda konwersji, jeśli masz zamiar się od punktu do WPF podwójna jest użycie klasy System.Windows.FontSizeConverter:

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

Teraz, jak przekonwertować z powrotem ** na punkty ** sizeForWpf? – moldovanu

Powiązane problemy