回答:
ありますインチあたり72ポイント。1インチあたり96ピクセルと仮定すれば十分であれば、式はかなり単純です。
ポイント=ピクセル* 72/96
を使用してWindowsのディスプレイの1インチあたりの構成ピクセルを取得する方法がありますGetDeviceCaps
。マイクロソフトには「DPI対応アプリケーションの開発」というガイドがあります。「DPI対応フォントの作成」セクションを探してください。
W3Cは、ディスプレイの実際の解像度に関係なく、ピクセル測定px
を正確に1/96分の1として定義しているため、上記の式はすべてのWeb作業に適しています。
コードがフォームにある場合は、これを試してください。
Graphics g = this.CreateGraphics();
points = pixels * 72 / g.DpiX;
g.Dispose();
96dpiを想定するのは大きな間違いです。仮定が正しい場合でも、フォントを拡大縮小するオプションもあります。したがって、10ポイントのフォントセットは、実際には12.5ポイント(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を使用します。LengthConverterは、係数1.333333333333333333を使用して、ポイント(p)からピクセル(x)に変換します:x = p * 1.3333333333333333
System.Drawing.Graphicsには、DpiXおよびDpiYプロパティがあります。DpiXは、水平方向の1インチあたりのピクセル数です。DpiYは、垂直方向の1インチあたりのピクセル数です。それらを使用して、ポイント(72ポイント/インチ)からピクセルに変換します。
例:14水平ポイント=(14 * DpiX)/ 72ピクセル
確かに、この質問全体は次のようになります。
「モニターの水平および垂直PPI(ピクセル/インチ)を取得するにはどうすればよいですか?」
1インチには72ポイントがあります(定義により、「ポイント」は1/72インチとして定義され、同様に「パイカ」は1/72フィートとして定義されます)。これらの2ビットの情報を使用すると、pxからptに変換したり、簡単に元に戻したりできます。
ポイント=(ピクセル/ 96)*標準のXP / Vista / 7マシンでは72(工場出荷時のデフォルト)
ポイント=(ピクセル/ 72)* OSXを実行している標準のMacでは72(工場出荷時のデフォルト)
Windowsはデフォルトで96 dpi(ディスプレイ)で動作しますMacはデフォルトで72 dpi(ディスプレイ)で動作します
72 POSTSCRIPTポイント= 1インチ12 POSTSCRIPTポイント= 1 POSTSCRIPT Pica 6 POSTSCRIPTパイカ= 72ポイント= 1インチ
1ポイント= 1⁄72インチ= 25.4⁄72 mm = 0.3527 mm
DPI =ドット/インチPPI =ピクセル/インチLPI =ライン/インチ
測定にemを使用する場合の詳細情報
16px = 1em(通常のテキストのデフォルト)8em = 16px * 8ピクセル/ 16 = em
ポイントとピクセルに変換された高さの線(自分の数式)。次に、行の高さフィールドに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ですか?わかりませんが、うまくいきます。)