2012-04-22 113 views
1

許多例子表明從點大小,這也是計算字體的邏輯大小的下列方式如何我的代碼已經做了多年:計算邏輯字體大小

SizeLogical = -MulDiv(SizePt, GetDeviceCaps(hdc, LOGPIXELSY), 72);

但我最近注意到像this one這樣的例子使用了96而不是72的因子。這是因爲多年來顯示器的物理分辨率已經提高了,所以它們每英寸顯示96像素,而不是印刷術經典的每英寸72點?如果是這樣,那麼正確的解決方案是動態確定因素,但是哪一個Windows API可以通過一個調用來實現呢?還是我誤解了這一切?

回答

1

72是每英寸的點數,這永遠不會改變。 96是每英寸像素的數量,並且可以在系統之間變化。

我相信你使用的公式直接來自微軟文檔。編輯 - 這裏是:http://msdn.microsoft.com/en-us/library/dd183499%28v=vs.85%29.aspx

您不必擔心96,因爲這是GetDeviceCaps返回的內容。

+0

感謝您的回答。只是要相當肯定:把它保持在72是正確的呢? – Dabbler 2012-04-22 15:14:17

+0

@Dabbler,是的,留在72。 – 2012-04-22 15:19:18