Muszę przekonwertować piksele na punkty w C #. Widziałem kilka skomplikowanych wyjaśnień na ten temat, ale nie mogę znaleźć prostego wzoru. Załóżmy, że standardowe 96 dpi, jak obliczyć tę konwersję?
126
Na cal przypada 72 punkty ; jeśli wystarczy przyjąć 96 pikseli na cal, wzór jest raczej prosty:
punkty = piksele * 72/96
Istnieje sposób na pobranie skonfigurowanych pikseli na cal ekranu w systemie Windows przy użyciu GetDeviceCaps
. Firma Microsoft ma przewodnik zatytułowany „Tworzenie aplikacji obsługujących rozdzielczość”. Poszukaj sekcji „Tworzenie czcionek obsługujących rozdzielczość DPI”.
W3C zdefiniował pomiar pikseli px
jako dokładnie 1/96 z 1 cala, niezależnie od rzeczywistej rozdzielczości ekranu, więc powyższy wzór powinien być dobry dla wszystkich prac internetowych.
Spróbuj tego, jeśli twój kod ma postać:
źródło
Zakładając, że 96dpi to ogromny błąd. Nawet jeśli założenie jest słuszne, istnieje również opcja skalowania czcionek. Zatem czcionka ustawiona na 10 punktów może w rzeczywistości być wyświetlana tak, jakby wynosiła 12,5 punktu (125%).
źródło
Zaczynając od podanych:
Jeśli chcesz znaleźć punkty (pt) na podstawie pikseli (px):
Zmiana układu:
więc:
źródło
WPF konwertuje punkty na piksele za pomocą System.Windows.FontSizeConverter. FontSizeConverter używa System.Windows.LengthConverter. LengthConverter wykorzystuje współczynnik 1.333333333333333333 do konwersji punktów (p) na piksele (x): x = p * 1.3333333333333333
źródło
System.Drawing.Graphics ma właściwości DpiX i DpiY. DpiX to piksele na cal w poziomie. DpiY to piksele na cal w pionie. Użyj ich do konwersji punktów (72 punkty na cal) na piksele.
Np .: 14 punktów poziomych = (14 * DpiX) / 72 piksele
źródło
Z pewnością całe to pytanie powinno brzmieć:
„Jak uzyskać poziomy i pionowy PPI (piksele na cal) monitora?”
W calu znajdują się 72 punkty (z definicji „punkt” jest definiowany jako 1/72 cala, podobnie jak „pica” jest definiowany jako 1/72 stopy). Dzięki tym dwóm bitom informacji możesz bardzo łatwo przekonwertować z px na pt iz powrotem.
źródło
Właściwie to musi być
źródło
punkty = (piksele / 96) * 72 na standardowym komputerze XP / Vista / 7 (ustawienia fabryczne)
punkty = (piksele / 72) * 72 na standardowym komputerze Mac z systemem OSX (ustawienia fabryczne)
Windows działa domyślnie z rozdzielczością 96 dpi (wyświetlacz) Komputery Mac domyślnie działają z rozdzielczością 72 dpi (wyświetlacz)
72 punkty POSTSCRIPT = 1 cal 12 punktów POSTSCRIPT = 1 POSTSCRIPT Pica 6 POSTSCRIPT Picas = 72 punkty = 1 cal
1 punkt = 1⁄72 cala = 25,4⁄72 mm = 0,3527 mm
DPI = Kropki na cal PPI = Piksele na cal LPI = Linie na cal
Więcej informacji, jeśli używasz em jako pomiaru
16px = 1em (domyślnie dla zwykłego tekstu) 8em = 16px * 8 pikseli / 16 = em
źródło
To działa:
źródło
Używanie wxPython na Macu, aby uzyskać prawidłowe DPI w następujący sposób:
To daje:
x-DPI: 72 y-DPI: 72
Zatem wzór jest następujący:
points: int = (pixelNumber * 72) // 72
źródło
Linie wysokości zamienione na punkty i piksele (moja własna formuła). Oto przykład z ręcznym wprowadzeniem 213,67 punktów w polu Wysokość wiersza:
Tutaj ręczne wprowadzenie 213,67 punktów daje 284 piksele.
Tutaj ręczne wprowadzenie 213,68 punktów daje 285 pikseli.
(Dlaczego 0,45? Nie wiem, ale działa.)
źródło