質問
ピクセルをC#のポイントに変換する必要があります。トピックに関する複雑な説明をいくつか見ましたが、単純な式を見つけることができないようです。標準の96dpiを想定して、この変換をどのように計算しますか?
解決
72ポイント/インチがあります。 1インチあたり96ピクセルと仮定すれば十分な場合、式はかなり単純です:
ポイント=ピクセル* 72/96
GetDeviceCaps
。 Microsoftには、" DPI対応アプリケーションの開発" というガイドがあります。 「DPI対応フォントの作成」セクションのセクション。
W3Cはピクセル測定 px
を正確にディスプレイの実際の解像度に関係なく、1インチの1/96 なので、上記の式はすべてのWeb作業に適しているはずです。
他のヒント
コードがフォームにある場合はこれを試してください:
Graphics g = this.CreateGraphics();
points = pixels * 72 / g.DpiX;
g.Dispose();
96dpiが巨大の間違いであると仮定します。仮定が正しい場合でも、フォントを拡大縮小するオプションもあります。したがって、10ポイントのフォントセットは、実際には12.5ポイント(125%)のように表示される場合があります。
指定されたものから開始:
- 1インチに72ポイント(つまり、1インチの1/72ポイント)
- 150dpiに設定されたシステムでは、1インチあたり150ピクセルです。
- 1 in = 72pt = 150px(150dpi設定の場合)
ピクセル(px)に基づいてポイント(pt)を検索する場合:
72 pt x pt
------ = ----- (1) for 150dpi system
150 px y px
再配置:
x = (y/150) * 72 (2) for 150dpi system
so:
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インチあたりのピクセル数です。これらを使用して、ポイント(1インチあたり72ポイント)からピクセルに変換します。
例:14水平ポイント=(14 * DpiX)/ 72ピクセル
確かにこの質問全体は次のようになります:
"モニターの水平および垂直PPI(1インチあたりのピクセル数)を取得するにはどうすればよいですか?
インチには72ポイントがあります(定義により、「ポイント」は1/72インチとして定義され、同様に「パイカ」は1/72フィートとして定義されます)。これらの2つの情報を使用すると、pxからptに変換したり、非常に簡単に変換したりできます。
実際にはそうでなければなりません
points = pixels * 96 / 72
ポイント=(ピクセル/ 96)*標準XP / Vista / 7マシンでは72(工場出荷時のデフォルト)
ポイント=(ピクセル/ 72)* OSXを実行している標準Macの場合は72(工場出荷時設定)
Windowsはデフォルトで96dpiで実行されます(表示) Macはデフォルトで72 dpi(ディスプレイ)で実行します
72 POSTSCRIPTポイント= 1インチ 12 POSTSCRIPTポイント= 1 POSTSCRIPT Pica 6 POSTSCRIPT Picas = 72ポイント= 1インチ
1ポイント= 1⁄ 72インチ= 25.4⁄ 72 mm = 0.3527 mm
DPI =インチあたりのドット数 PPI =インチあたりのピクセル LPI = 1インチあたりの線数
測定としてemを使用する場合の詳細情報
16px = 1em(通常のテキストのデフォルト) 8em = 16px * 8 ピクセル/ 16 = em
これは動作します:
int pixels = (int)((dp) * Resources.System.DisplayMetrics.Density + 0.5f);
高さの線がポイントとピクセルに変換されます(自分の式)。 行の高さフィールドに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なのかわかりませんが、動作します。)