Saya perlu mengonversi Piksel ke Poin di C #. Saya telah melihat beberapa penjelasan rumit tentang topik tersebut, tetapi sepertinya tidak dapat menemukan formula sederhana. Mari kita asumsikan 96dpi standar, bagaimana cara menghitung konversi ini?
125
Coba ini jika kode Anda terletak pada formulir:
sumber
Dengan asumsi 96dpi adalah kesalahan besar . Sekalipun asumsi itu benar, ada juga opsi untuk menskala font. Jadi font yang ditetapkan untuk 10pts sebenarnya dapat ditampilkan seolah-olah 12.5pt (125%).
sumber
Dimulai dengan yang diberikan:
Jika Anda ingin menemukan poin (pt) berdasarkan piksel (px):
Mengatur ulang:
begitu:
sumber
WPF mengonversi titik ke piksel dengan System.Windows.FontSizeConverter. FontSizeConverter menggunakan System.Windows.LengthConverter. LengthConverter menggunakan faktor 1.333333333333333333 untuk mengkonversi dari titik (p) ke piksel (x): x = p * 1.3333333333333333
sumber
System.Drawing.Graphics memiliki properti DpiX dan DpiY. DpiX adalah piksel per inci secara horizontal. DpiY adalah piksel per inci secara vertikal. Gunakan itu untuk mengkonversi dari titik (72 poin per inci) ke piksel.
Mis: 14 titik horizontal = (14 * DpiX) / 72 piksel
sumber
Tentunya seluruh pertanyaan ini seharusnya:
"Bagaimana cara mendapatkan PPI horizontal dan vertikal (Piksel Per Inci) dari monitor?"
Ada 72 titik dalam satu inci (menurut definisi, "titik" didefinisikan sebagai 1/72 inci, demikian pula "pica" didefinisikan sebagai 1/72 kaki). Dengan dua bit informasi ini Anda dapat mengkonversi dari px ke pt dan kembali dengan sangat mudah.
sumber
Sebenarnya harus begitu
sumber
poin = (piksel / 96) * 72 pada mesin XP / Vista / 7 standar (default pabrik)
poin = (piksel / 72) * 72 pada Mac standar yang menjalankan OSX (Default pabrik)
Windows berjalan sebagai default di 96dpi (display) Mac berjalan sebagai default di 72 dpi (display)
72 Poin POSTSCRIPT = 1 inci 12 Poin POSTSCRIPT = 1 POSTSCRIPT Pica 6 POSTSCRIPT Picas = 72 Poin = 1 inci
1 poin = 1⁄72 inci = 25,4⁄72 mm = 0,3527 mm
DPI = Dots Per Inch PPI = Pixels Per Inch LPI = Lines per inch
Info lebih lanjut jika menggunakan mereka sebagai pengukur
16px = 1em (default untuk teks normal) 8em = 16px * 8 Pixels / 16 = em
sumber
Ini bekerja:
sumber
Menggunakan wxPython di Mac untuk mendapatkan DPI yang benar sebagai berikut:
Ini menghasilkan:
x-DPI: 72 y-DPI: 72
Jadi, rumusnya adalah:
poin: int = (pixelNumber * 72) // 72
sumber
Garis tinggi dikonversi menjadi titik dan piksel (rumus saya sendiri). Berikut ini adalah contoh dengan entri manual 213,67 poin di bidang Tinggi Baris:
Di sini entri manual 213,67 poin memberikan 284 piksel.
Di sini entri manual 213,68 poin memberikan 285 piksel.
(Mengapa 0,45? Saya tidak tahu tetapi itu berhasil.)
sumber