如何顯示固定寬度的字串? |
尚未結案
|
Main Chen
高階會員 發表:29 回覆:135 積分:127 註冊:2002-10-07 發送簡訊給我 |
請教各位先進: 我想要在 Canvas 中顯示一個指定的寬度字串, 下列程式中使用在固定寬度字型 (Fixed) 中沒有問題, 但選用調合字型 (TrueType 'i' 與 'w' 寬度不同) 時, 就無法依指定的寬度來顯示, 不知道有什麼方法可以讓調合字型顯示固定寬度, 謝謝.
procedure TForm1.PaintBox1Paint(Sender: TObject); var LogRec: TLOGFONT; OldFont, NewFont: HFONT; begin with PaintBox1.Canvas do begin Brush.Style := bsClear; GetObject(Font.Handle, SizeOf(LogRec), @LogRec); with LogRec do begin lfOutPrecision := OUT_DEFAULT_PRECIS; lfEscapement := 0; lfHeight := 30; lfWidth := 30; NewFont := CreateFontIndirect(LogRec); OldFont := SelectObject(Handle, NewFont); TextOut(x, y, 'i'); NewFont := SelectObject(Handle, OldFont); DeleteObject(NewFont); end; Rectangle(x, y, x 30, y 30); end; end; |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
aip999
初階會員 發表:10 回覆:63 積分:44 註冊:2002-03-29 發送簡訊給我 |
引言: 請教各位先進: 我想要在 Canvas 中顯示一個指定的寬度字串, 下列程式中使用在固定寬度字型 (Fixed) 中沒有問題, 但選用調合字型 (TrueType 'i' 與 'w' 寬度不同) 時, 就無法依指定的寬度來顯示, 不知道有什麼方法可以讓調合字型顯示固定寬度, 謝謝.由於windows 有很多字型滿多字型寬高都不一樣 但也有寬高字型一樣的字型例如: Courier 你自己試看看吧procedure TForm1.PaintBox1Paint(Sender: TObject); var LogRec: TLOGFONT; OldFont, NewFont: HFONT; begin with PaintBox1.Canvas do begin Brush.Style := bsClear; GetObject(Font.Handle, SizeOf(LogRec), @LogRec); with LogRec do begin lfOutPrecision := OUT_DEFAULT_PRECIS; lfEscapement := 0; lfHeight := 30; lfWidth := 30; NewFont := CreateFontIndirect(LogRec); OldFont := SelectObject(Handle, NewFont); TextOut(x, y, 'i'); NewFont := SelectObject(Handle, OldFont); DeleteObject(NewFont); end; Rectangle(x, y, x 30, y 30); end; end; |
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
Main Chen 你好
procedure TForm1.PaintBox1Paint(Sender: TObject); var LogRec: TLOGFONT; OldFont, NewFont: HFONT; begin with PaintBox1.Canvas do begin Brush.Style := bsClear; GetObject(Font.Handle, SizeOf(LogRec), @LogRec); Font.Pitch := fpFixed ; //加入這行 with LogRec do begin lfOutPrecision := OUT_DEFAULT_PRECIS; lfEscapement := 0; lfHeight := 30; lfWidth := 30; NewFont := CreateFontIndirect(LogRec); OldFont := SelectObject(Handle, NewFont); TextOut(x, y, 'i'); NewFont := SelectObject(Handle, OldFont); DeleteObject(NewFont); end; Rectangle(x, y, x 30, y 30); end; end;看看可以嗎? |
Main Chen
高階會員 發表:29 回覆:135 積分:127 註冊:2002-10-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |