X xiaoer Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #1 比如“科技园”三个字,当它的字体不同时,显示在屏幕上的宽度也会不同。 开始我以为每个汉字16点,就用 Length('科技园')*16 但试了才知道不行。
卷 卷起千堆雪tyn Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #2 其实字体的宽度你可以自己通过设定字体的大小来定义, 下面是字体高度和象素数/英寸的转换: Font.Height = -Font.Size * Font.PixelsPerInch / 72
X xiaoer Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #3 这个可以获得字体的高度,但还要考虑到中文字和英文字,还有字之间的间距。 中文字和英文字是Unicode的问题, 字之间的间距是什么回事啊。
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #4 TCanvas.Font TCanvas.TextWidth 详见Delphi的帮助,我就不多说了。
S sherman Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #5 []TCanvas.TextWidth(s: String): integer; 设置TCanvas.Font就可以通过该函数获得字符串的宽度
卷 卷起千堆雪tyn Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #6 procedure TForm1.Button1Click(Sender: TObject); begin Canvas.Font.Name :='宋体'; Edit1.Text :=IntToStr(Canvas.TextWidth('科技园')); end; ^_^
procedure TForm1.Button1Click(Sender: TObject); begin Canvas.Font.Name :='宋体'; Edit1.Text :=IntToStr(Canvas.TextWidth('科技园')); end; ^_^
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #7 楼上们写的一个比一个具体,精神真好呀! 看来我也要学习学习了。 (用得着吗?有说明就行了,不用动不动就把贴代码贴出来。我没有写,是因为Delphi的帮助里有Example) Font.Size TCanvas.TextHeight
楼上们写的一个比一个具体,精神真好呀! 看来我也要学习学习了。 (用得着吗?有说明就行了,不用动不动就把贴代码贴出来。我没有写,是因为Delphi的帮助里有Example) Font.Size TCanvas.TextHeight
B barton Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-24 #8 API最好呀,看你用来做什么。标准用法: 1.计算字符在某个Rect中的净高度和净宽度: DrawText(Canvas.Handle, '汉字', 4, Rect, DT_CALCRECT) 2.计算在何处断行: GetTextExtendExPoint(Canvas.Handle, PStart, N, MaxWidth, @MaxW, nil, ASize); 有关参数查查MS SDK Manual
API最好呀,看你用来做什么。标准用法: 1.计算字符在某个Rect中的净高度和净宽度: DrawText(Canvas.Handle, '汉字', 4, Rect, DT_CALCRECT) 2.计算在何处断行: GetTextExtendExPoint(Canvas.Handle, PStart, N, MaxWidth, @MaxW, nil, ASize); 有关参数查查MS SDK Manual
X xiaoer Unregistered / Unconfirmed GUEST, unregistred user! 2001-09-25 #9 感谢“卷起千堆雪tyn”的热心回答,由于其他人说的也对,所以就只能给你50分了。 谢谢大家! 对于barton的回答我没有试,因为在Delphi中用API我不是很熟。