जवाबों:
प्रति इंच 72 बिंदु हैं ; यदि यह 96 पिक्सेल प्रति इंच मानने के लिए पर्याप्त है, तो सूत्र सरल है:
अंक = पिक्सल * 72/96
Windows में आपके डिस्प्ले के प्रति इंच कॉन्फ़िगर किए गए पिक्सेल प्राप्त करने का एक तरीका है GetDeviceCaps
। Microsoft के पास "विकासशील DPI-Aware अनुप्रयोग" नामक एक मार्गदर्शिका है , "DPI-Aware फ़ॉन्ट्स बनाना" अनुभाग देखें।
W3C ने पिक्सेल माप px
को आपके डिस्प्ले के वास्तविक रिज़ॉल्यूशन की परवाह किए बिना 1in के 1/96 वें हिस्से के रूप में परिभाषित किया है , इसलिए उपरोक्त फॉर्मूला सभी वेब काम के लिए अच्छा होना चाहिए।
96 डीपीआई मान लेना एक बहुत बड़ी गलती है। यहां तक कि अगर धारणा सही है, तो फोंट को स्केल करने का विकल्प भी है। तो 10 के लिए सेट एक फ़ॉन्ट वास्तव में दिखाया जा सकता है जैसे कि यह 12.5pt (125%) है।
दिए गए के साथ शुरू:
यदि आप पिक्सेल (px) के आधार पर अंक (pt) खोजना चाहते हैं:
72 pt x pt
------ = ----- (1) for 150dpi system
150 px y px
उलटफेर करने पर:
x = (y/150) * 72 (2) for 150dpi system
इसलिए:
points = (pixels / 150) * 72 (3) for 150dpi system
WPF, System.Windows.FontSizeConverter के साथ पिक्सल में पॉइंट्स को कनवर्ट करता है। FontSizeConverter System.Windows.LengthConverter का उपयोग करता है। लंबाईसंकेतक बिंदु (p) से पिक्सेल (x): x = p * 1.3333333333333333 में परिवर्तित करने के लिए कारक 1.3333333333333333 का उपयोग करता है।
System.Drawing.Graphics में DpiX और DpiY गुण हैं। डीपीआईएक्स क्षैतिज रूप से प्रति इंच पिक्सेल है। डीपीवाईआई पिक्सल प्रति इंच लंबवत है। उन बिंदुओं (72 अंक प्रति इंच) से पिक्सेल में बदलने के लिए उपयोग करें।
Ex: 14 क्षैतिज बिंदु = (14 * DpiX) / 72 पिक्सेल
निश्चित रूप से यह पूरा प्रश्न होना चाहिए:
"मैं मॉनिटर के क्षैतिज और ऊर्ध्वाधर पीपीआई (पिक्सेल प्रति इंच) कैसे प्राप्त कर सकता हूं?"
एक इंच में 72 बिंदु हैं (परिभाषा के अनुसार, एक "बिंदु" को 1 इंच के 1/72 वें रूप में परिभाषित किया गया है, इसी तरह एक "पिका" को 1/72 वें चरण के रूप में परिभाषित किया गया है)। जानकारी के इन दो बिट्स के साथ आप px से pt में बदल सकते हैं और बहुत आसानी से वापस आ सकते हैं।
अंक = (पिक्सल / 96) * 72 एक मानक एक्सपी / विस्टा / 7 मशीन (कारखाना चूक) पर
अंक = (पिक्सेल / 72) * 72 एक मानक मैक पर चल रहा है जो OSX (फैक्टरी डिफॉल्ट) है
विंडोज 96 डीपीआई (डिसप्ले) पर डिफॉल्ट रूप से चलता है, मैक 72 डीपीआई (डिसप्ले) पर डिफॉल्ट के रूप में चलता है
72 POSTSCRIPT अंक = 1 इंच 12 POSTSCRIPT अंक = 1 POSTSCRIPT पिका 6 POSTSCRIPT पिकास = 72 अंक = 1 इंच
1 बिंदु = 1 =72 इंच = 25.4⁄72 मिमी = 0.3527 मिमी
डीपीआई = डॉट्स प्रति इंच पीपीआई = पिक्सल प्रति इंच एलपीआई = लाइनें प्रति इंच
अधिक जानकारी अगर उन्हें मापने के रूप में उपयोग कर रहे हैं
16px = 1em (सामान्य पाठ के लिए डिफ़ॉल्ट) 8em = 16px * 8 पिक्सेल / 16 = em
यह काम:
int pixels = (int)((dp) * Resources.System.DisplayMetrics.Density + 0.5f);
निम्नानुसार डीपीआई प्राप्त करने के लिए मैक पर wxPython का उपयोग करना:
from wx import ScreenDC
from wx import Size
size: Size = ScreenDC().GetPPI()
print(f'x-DPI: {size.GetWidth()} y-DPI: {size.GetHeight()}')
यह प्रदान करता है:
x-DPI: 72 y-DPI: 72
इस प्रकार, सूत्र है:
अंक: int = (पिक्सेलनंबर * 72) // 72
ऊँचाई लाइनें बिंदुओं और पिक्सेल (मेरे अपने सूत्र) में परिवर्तित हो जाती हैं। पंक्ति ऊंचाई क्षेत्र में 213.67 अंकों की मैन्युअल प्रविष्टि के साथ यहां एक उदाहरण दिया गया है:
213.67 Manual Entry
0.45 Add 0.45
214.12 Subtotal
213.75 Round to a multiple of 0.75
213.00 Subtract 0.75 provides manual entry converted by Excel
284.00 Divide by 0.75 gives the number of pixels of height
यहां 213.67 पॉइंट की मैनुअल एंट्री 284 पिक्सल देती है।
यहां 213.68 पॉइंट की मैनुअल एंट्री 285 पिक्सल देती है।
(क्यों 0.45? मैं नहीं जानता लेकिन यह काम करता है।)