我要找應採取參數字體名稱,樣品的性格,寬度,樣本字符的高度,應該返回字體大小的功能得到字體大小。如何在delphi
它必須看起來像這樣:
GetFontSize(<Font Name>, <Sample Character>, <Sample Character Width>,
<Sample Character Height>)
必須返回字體大小,
這可能在delphi?
我要找應採取參數字體名稱,樣品的性格,寬度,樣本字符的高度,應該返回字體大小的功能得到字體大小。如何在delphi
它必須看起來像這樣:
GetFontSize(<Font Name>, <Sample Character>, <Sample Character Width>,
<Sample Character Height>)
必須返回字體大小,
這可能在delphi?
我只知道的方法做相反的 - 那就是,爲了從點大小的像素尺寸。
我能想到的唯一方法是設置一個TCanvas
,並反覆調用GetTextExtent
,每次更改字體大小,直到獲得可接近您想要的大小。
根據你需要這個如何準確,你可以只轉換你想要的高度內的像素點 - 點是1/72英寸,並且屏幕每英寸大概96個像素(但檢查GetDeviceCaps
得到真實數字)。見this question。
這將讓你的字體大小非常接近你想要的像素尺寸。
謝謝你Blorgbeard你的反應。我會檢查 – Bharat 2010-05-28 10:44:54
你可能想看看這個頁面,討論font size and points。
它使用以下的點與像素尺寸之間進行轉換:
Arial 12pt at 96 dpi: font size in points 12 font size in pixels = ------------------- × 96 dpi = ---- × 96 = 16 pixels 72 points per inch 72
你可以使用你的轉換。 Blorgbeard表示,你只需要注意屏幕dpi的可能差異。點通常用於描述紙張的大小。您需要決定如何將其映射到屏幕。例如,許多程序將允許您設置縮放級別。這不會更改紙張上的打印尺寸,但會影響屏幕上的像素高度。
取決於你所要完成您可能需要獲取字體的實際尺寸是什麼。如果你正在試圖找出字體究竟是如何放在一起看看Obtaining Font Metrics該網頁上的代碼使用.NET庫,但它有一個很好的解釋。如果你想在Delphi中獲得文本度量,你可以使用GetTextMetrics function。
正如羅布在他的評論中指出,你可以通過在像素Font.Size屬性設置爲負高度在特定的高度繪製文本。 Windows會在這個高度繪製文本。在這種情況下,您不需要特定的字母或寬度就像您在原型函數中所做的那樣。對於給定的字體大小,每個字母將具有不同的高度和寬度。 I.E.大寫字母將比小寫字母更高,字母「W」比字母「i」更寬。
需要明確的是:您是否正在尋找在點的字體大小,從寬+高在一個特定字符的像素計算出來的? – Blorgbeard 2010-05-28 10:05:07
是一模一樣 – Bharat 2010-05-28 10:08:31
什麼版本的Delphi? – Blorgbeard 2010-05-28 10:10:30