[C#] 픽셀을 포인트로 변환

C #에서 픽셀을 포인트로 변환해야합니다. 주제에 대한 복잡한 설명을 보았지만 간단한 공식을 찾을 수없는 것 같습니다. 표준 96dpi를 가정 해 보겠습니다.이 변환을 어떻게 계산합니까?



답변

인치당 72 포인트 가 있습니다 . 인치당 96 픽셀을 가정하는 것으로 충분하다면 공식은 다소 간단합니다.

포인트 = 픽셀 * 72/96

을 사용하여 Windows에서 디스플레이의 인치당 구성된 픽셀을 가져 오는 방법이 있습니다 GetDeviceCaps. Microsoft에는 “DPI 인식 응용 프로그램 개발” 이라는 가이드가 있습니다. DPI 인식 글꼴 만들기”섹션을 찾아보십시오.

W3C는 디스플레이의 실제 해상도에 관계없이 픽셀 측정 px을 정확히 1/96의 1 인치 로 정의 했으므로 위의 공식은 모든 웹 작업에 적합해야합니다.


답변

코드가 양식에있는 경우 다음을 시도하십시오.

Graphics g = this.CreateGraphics();
points = pixels * 72 / g.DpiX;
g.Dispose();


답변

96dpi가 실수 라고 가정합니다 . 가정이 맞더라도 글꼴 크기를 조정할 수있는 옵션도 있습니다. 따라서 10pt로 설정된 글꼴은 실제로 12.5pt (125 %) 인 것처럼 표시 될 수 있습니다.


답변

주어진 것으로 시작 :

  • 1 인치에는 72 포인트가 있습니다 (즉, 1 인치의 1/72 포인트)
  • 150dpi로 설정된 시스템에는 인치당 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


답변

WPF는 System.Windows.FontSizeConverter를 사용하여 포인트를 픽셀로 변환합니다. FontSizeConverter는 System.Windows.LengthConverter를 사용합니다. LengthConverter는 계수 1.333333333333333333을 사용하여 포인트 (p)에서 픽셀 (x)로 변환합니다. x = p * 1.3333333333333333


답변

System.Drawing.Graphics에는 DpiX 및 DpiY 속성이 있습니다. DpiX는 수평 인치당 픽셀입니다. DpiY는 수직 인치당 픽셀입니다. 포인트 (72 포인트 / 인치)에서 픽셀로 변환하는 데 사용합니다.

예 : 14 개의 수평 포인트 = (14 * DpiX) / 72 픽셀


답변

확실히이 모든 질문은 다음과 같아야합니다.

“모니터의 수평 및 수직 PPI (Pixels Per Inch)는 어떻게 얻습니까?”

인치에는 72 개의 포인트가 있습니다 (정의에 따라 “포인트”는 인치의 1 / 72nd로 정의되고 “pica”는 피트의 1 / 72nd로 정의 됨). 이 두 가지 정보를 사용하면 px에서 pt로 쉽게 변환 할 수 있습니다.