線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1767
推到 Plurk!
推到 Facebook!

如何得到某種字型中, 最大字寬?

尚未結案
KuengYan
一般會員


發表:18
回覆:17
積分:7
註冊:2002-08-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-29 15:04:35 IP:61.220.xxx.xxx 未訂閱
各位老大, 小弟使用 TEXTMETRIC 這個結構, 其參數中有一個tmMaxCharWidth. 從MSDN上得知, 這是在所設定的字型裡, 所有字元的最大的寬度. 但我從使用Canvas的函式TextWidth所得到的值, 竟然會比tmMaxCharWidth還大. 很奇怪.. 是否有哪邊沒有考慮到? Yan
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-29 21:07:06 IP:61.217.xxx.xxx 未訂閱
KuengYan 您好:    方便的話,請將您測試的程式碼貼上來,這樣子比較好討論。      7 天天敲鍵盤 v 時時按滑鼠 8
KuengYan
一般會員


發表:18
回覆:17
積分:7
註冊:2002-08-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-29 23:39:19 IP:218.168.xxx.xxx 未訂閱
TEXTMETRIC tm;
if(FontDialog->Execute()){
    ImagePixel->Canvas->Font->Assign(FontDialog->Font);
    GetTextMetrics(ImagePixel->Canvas->Handle, &tm);
    int nMaxCharWidth = tm.tmMaxCharWidth;
}
int nLetterWidth = ImagePixel->Canvas->TextWidth(strChar);
有可能nLetterWidth 會大於nMaxCharWidth的值, 真是奇怪...
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-30 00:48:46 IP:61.230.xxx.xxx 未訂閱
KuengYan 您好:    我未能測出您所描述的結果,可否說明一下您是選擇了那種字型,且測試了那個字元?好讓我也能模擬出您的設定條件來做相同的測試。    TextWidth() 傳回的是繪製字串的總寬度,而 TEXTMETRIC 的 tmMaxCharWidth 則是最大寬度的單一字元寬度,如果您的測試基準不是單一字元的話,兩者的比較就失去意義了。 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/09/30 01:01:03
KuengYan
一般會員


發表:18
回覆:17
積分:7
註冊:2002-08-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-30 07:47:37 IP:218.168.xxx.xxx 未訂閱
引言:我未能測出您所描述的結果,可否說明一下您是選擇了那種字型,且測試了那個字元?好讓我也能模擬出您的設定條件來做相同的測試。 TextWidth() 傳回的是繪製字串的總寬度,而 TEXTMETRIC 的 tmMaxCharWidth 則是整組字型中最大寬度的單一字元寬度,如果您的測試基準不是單一字元的話,兩者的比較就失去意義了。
RedSnow 您好, 基本上, 我是任選任一種字型, 然後利用TEXTMETRIC來得到所選擇字型的最大字寬, TextWidth的部份, 我當然是輸入單一個字元, 但是以widestring的型式帶入的. Yan Yan
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-01 00:59:45 IP:61.230.xxx.xxx 未訂閱
KuengYan 您好:    我使用迴圈將所有字型都測試一遍之後,終於碰到您描述的情形了,但是有點奇怪,我測試了 80 種字型,結果僅有兩種字型有那種狀況,字型名稱分別是 "Led Display" 與 phony,另外我測試時,將 AnsiString, WideString 與 Char 三種類型的字樣都一起做了測試,結果 TextWidth 傳回的寬度都是相同的。    我研究了半天也一樣沒看出什麼名堂....,抱歉;沒能幫忙找出答案,僅能提供上述的測試過程與結果供您參考一下。      7 天天敲鍵盤 v 時時按滑鼠 8
KuengYan
一般會員


發表:18
回覆:17
積分:7
註冊:2002-08-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-07 07:25:13 IP:218.168.xxx.xxx 未訂閱
引言: 我使用迴圈將所有字型都測試一遍之後,終於碰到您描述的情形了,但是有點奇怪,我測試了 80 種字型,結果僅有兩種字型有那種狀況,字型名稱分別是 "Led Display" 與 phony,另外我測試時,將 AnsiString, WideString 與 Char 三種類型的字樣都一起做了測試,結果 TextWidth 傳回的寬度都是相同的。
奇怪了, 為什麼你只會有二種字型會有這種現象? 我這邊幾乎每種字型都會. 請問您是以什麼字元帶入測試. 我這邊是以選定某些區段, 先將big5 -> unicode後, 再帶入測試的咧.. Yan
系統時間:2024-04-26 23:22:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!