如何得出字符宽度与高度

Xamdf 2004-05-09 09:21:06
先用“CreateFont(8 * 2, 0, 900, 900, 0, False, False, False, OEM_CHARSET,......”创建字体对像,
然后用Picture.Print方法在Picture中写上几个文字,如何得出每个文字的宽度与高度?
...全文
144 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xamdf 2004-05-09
  • 打赏
  • 举报
回复
谢谢所有回贴的朋友!
Xamdf 2004-05-09
  • 打赏
  • 举报
回复
kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!) :
谢谢!十分感谢!
Xamdf 2004-05-09
  • 打赏
  • 举报
回复
啊,我试试
wumy_ld 2004-05-09
  • 打赏
  • 举报
回复
PaperObject是什么东东?PictureBox吗?

MsgBox TextWidth(TitleA) & "-" & TextHeight(TitleA)
改为
MsgBox PaperObject.TextWidth(TitleA) & "-" & PaperObject.TextHeight(TitleA)

如果只用TextWidth,表示用窗体的字体来返回高度,你的窗体的字体又没有改变,当然是一个固定值了。
broown 2004-05-09
  • 打赏
  • 举报
回复
mark
Xamdf 2004-05-09
  • 打赏
  • 举报
回复
偶是来向各位学习的!
Xamdf 2004-05-09
  • 打赏
  • 举报
回复
我已试过了,不行的,不论我用多大号的字体,返回值都是180*180,没有其他的办法吗?

我的代码:
Public Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal U As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public FONT_SIZE As Long
Public Const PRINTER_SCALE = 2
Public Const OEM_CHARSET = 255
'输出精度常数,使用TrueType字体,如果没有TrueType字体则使用缺省字体
Public Const OUT_TT_ONLY_PRECIS = 7
'剪切精度常数,CLIP_DEFAULT_PRECIS为缺省方式
Public Const CLIP_DEFAULT_PRECIS = 0
Public Const CLIP_LH_ANGLES = &H10
'字体质量常数,这里选用的是高质量.
Public Const PROOF_QUALITY = 2


将下面的代码放到一个过程中:
Dim CF As Long 'CreateFont
Dim OF As Long 'OldFont
PaperObject.Cls
PaperObject.BackColor = &H80000005
PaperObject.ScaleMode = vbPixels
PaperObject.FillStyle = vbFSSolid
PaperObject.FillColor = QBColor(15)
PaperObject.AutoRedraw = True

FONT_SIZE = 8
CF = CreateFont(FONT_SIZE * PRINTER_SCALE, 0, 900, 900, 0, False, False, False, OEM_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_LH_ANGLES Or CLIP_DEFAULT_PRECIS, PROOF_QUALITY, 0, "隶书")
OF = SelectObject(PaperObject.hdc, CF)
PaperObject.CurrentX = 10
PaperObject.CurrentY = (PaperHeight + 60) / 2
PaperObject.ForeColor = RGB(255, 0, 0)
PaperObject.Print TitleA
MsgBox TextWidth(TitleA) & "-" & TextHeight(TitleA)
CF = SelectObject(PaperObject.hdc, OF)
DeleteObject CF

无论FONT_SIZE取何值,返回值都是TitleA中"字符个数*180-180"
怎么办?
Kang哥 2004-05-09
  • 打赏
  • 举报
回复
偶不认识笨笨:)
ryuginka 2004-05-09
  • 打赏
  • 举报
回复
up
viena 2004-05-09
  • 打赏
  • 举报
回复
两个本本,是不是马甲啊?
TextWidth(字符)
TextHeight(字符)
wumy_ld 2004-05-09
  • 打赏
  • 举报
回复
首先把picture的字体设置为要打印的字体,然后用楼上的方法就可以读出来。
Kang哥 2004-05-09
  • 打赏
  • 举报
回复
picture.TextHeight(你的字符串)\TextWidth()
Xamdf 2004-05-09
  • 打赏
  • 举报
回复
哪位高手指点一下呗,分少了再加!

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧