131

C# でピクセルをポイントに変換する必要があります。このトピックに関する複雑な説明を見たことがありますが、単純な式を見つけることができないようです. 標準の 96dpi を想定してみましょう。この変換はどのように計算すればよいでしょうか?

4

12 に答える 12

216

1 インチあたり 72 ポイントあります。1 インチあたり 96 ピクセルと仮定するだけで十分な場合、式はかなり単純になります。

ポイント = ピクセル * 72 / 96

を使用して、Windows でディスプレイの構成済みピクセル/インチを取得する方法がありますGetDeviceCapsMicrosoft には「Developing DPI-Aware Applications」というガイドがあり、「Creating DPI-Aware Fonts」セクションを探してください。

W3C では、ディスプレイの実際の解像度に関係なく、ピクセルの測定値を 1 インチのpx正確に 1/96と定義しているため、上記の式はすべての Web 作業に適しています。

于 2008-09-26T14:04:53.193 に答える
59

コードがフォームにある場合は、これを試してください。

Graphics g = this.CreateGraphics();
points = pixels * 72 / g.DpiX;
g.Dispose();
于 2009-07-03T12:06:29.113 に答える
26

与えられたものから始めます:

  • 1インチに72ポイントあります(つまり、ポイントは1インチの1/72です)
  • 150dpiに設定されたシステムでは、1インチあたり150ピクセルがあります。
  • 1インチ=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

それで:

points = (pixels / 150) * 72    (3) for 150dpi system
于 2009-08-10T17:55:26.240 に答える
25

96dpi と仮定するのは大きな間違いです。仮定が正しい場合でも、フォントをスケーリングするオプションもあります。そのため、10pts に設定されたフォントは、実際には 12.5pt (125%) であるかのように表示される場合があります。

于 2008-09-26T14:06:25.093 に答える
9

WPF は、System.Windows.FontSizeConverter を使用してポイントをピクセルに変換します。FontSizeConverter は System.Windows.LengthConverter を使用します。LengthConverter は係数 1.33333333333333333 を使用して、ポイント (p) からピクセル (x) に変換します: x = p * 1.3333333333333333

于 2010-09-02T18:44:34.600 に答える
5

System.Drawing.Graphics には、DpiX および DpiY プロパティがあります。DpiX は、水平方向の 1 インチあたりのピクセル数です。DpiY は、垂直方向の 1 インチあたりのピクセル数です。これらを使用して、ポイント (1 インチあたり 72 ポイント) からピクセルに変換します。

例: 14 水平ポイント = (14 * DpiX) / 72 ピクセル

于 2008-09-26T14:45:19.430 に答える
4

ポイント = (ピクセル / 96) * 標準の XP/Vista/7 マシンでは 72 (工場出荷時のデフォルト)

ポイント = (ピクセル / 72) * OSX を実行している標準の Mac では 72 (工場出荷時のデフォルト)

Windows はデフォルトで 96 dpi (ディスプレイ) で動作します Mac はデフォルトで 72 dpi (ディスプレイ) で動作します

72 POSTSCRIPT ポイント = 1 インチ 12 POSTSCRIPT ポイント = 1 POSTSCRIPT パイカ 6 POSTSCRIPT パイカ = 72 ポイント = 1 インチ

1 ポイント = 1⁄72 インチ = 25.4⁄72 mm = 0.3527 mm

DPI = 1 インチあたりのドット数 PPI = 1 インチあたりのピクセル数 LPI = 1 インチあたりのライン数

測定に em を使用する場合の詳細情報

16px = 1em (通常のテキストのデフォルト) 8em = 16px * 8 ピクセル/16 = em

于 2011-08-25T20:55:40.227 に答える
4

確かに、この質問全体は次のようになります。

「モニターの水平方向と垂直方向の PPI (Pixels Per Inch) を取得するにはどうすればよいですか?」

1 インチは 72 ポイントです (定義上、「ポイント」は 1/72 インチとして定義され、「パイカ」は 1/72 フィートとして定義されます)。これらの 2 ビットの情報を使用すると、px から pt に簡単に変換できます。

于 2008-09-26T13:59:51.617 に答える
4

実はそうに違いない

points = pixels * 96 / 72
于 2010-07-12T12:02:07.387 に答える
1

これは機能します:

int pixels = (int)((dp) * Resources.System.DisplayMetrics.Density + 0.5f);
于 2016-08-07T05:12:38.243 に答える
-1

ポイントとピクセルに変換された高さの線 (独自の式)。行の高さフィールドに 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 なのかはわかりませんが、動作します。)

于 2010-08-16T22:57:10.617 に答える