Const DT_CENTER = &H1 Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Sub Form_Load() Picture1.AutoRedraw = True Picture1.ScaleMode = 3 Dim R As RECT SetRect R, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight DrawText Picture1.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER End Sub
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As rect, ByVal wFormat As Long) As Long Private Const DT_CENTER = &H1Private Type rect mleft As Long mtop As Long mright As Long mbottom As Long End TypePrivate Sub Command1_Click() Dim rt As rect rt.mleft = 85: rt.mtop = 0 rt.mright = 97: rt.mbottom = 12DrawText Picture1.hdc, "a", 1, rt, DT_CENTER End Sub
Picture1.AutoRedraw = True Picture1.ScaleMode = 3 Dim R As RECT SetRect R, 0, 0, 97, Picture1.ScaleHeight lngResult = DrawText(Picture1.hdc, "BS牵引车用蓄电池", -1, R, _ DT_WORDBREAK Or DT_NOPREFIX Or DT_MODIFYSTRING Or _ DT_EDITCONTROL Or DT_CALCRECT)这样为什么,看不到?
你那有几个常数是函数DrawTextEx中的,参考: DrawText VB声明 Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long 说明 将文本描绘到指定的矩形中 返回值 Long,描绘文字的高度 参数表 参数 类型及说明 hdc Long,欲在其中显示文字的一个设备场景的句柄 lpStr String,欲描绘的文本字串 nCount Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1 lpRect RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标) wFormat Long,一个标志位数组,决定了以何种形式执行绘图。参考下面总结的常数类型列表 标志常数 说明 DT_BOTTOM 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边 DT_CALCRECT 象下面这样计算格式化矩形:多行绘图时矩形的底边根据需要进行延展,以便容下所有文字;单行绘图时,延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值 DT_CENTER 文本垂直居中 DT_EXPANDTABS 描绘文字的时候,对制表站进行扩展。默认的制表站间距是8个字符。但是,可用DT_TABSTOP标志改变这项设定 DT_EXTERNALLEADING 计算文本行高度的时候,使用当前字体的外部间距属性(the external leading attribute) DT_LEFT 文本左对齐 DT_NOCLIP 描绘文字时不剪切到指定的矩形 DT_NOPREFIX 通常,函数认为 & 字符表示应为下一个字符加上下划线。该标志禁止这种行为 DT_RIGHT 文本右对齐 DT_SINGLELINE 只画单行 DT_TABSTOP 指定新的制表站间距,采用这个整数的高8位 DT_TOP 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部 DT_VCENTER 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部 DT_WORDBREAK 进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志,这里的设置则无效 DrawTextEx VB声明 Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long 说明 与DrawText相似,只是加入了更多的功能 返回值 Long,描绘文字的高度 参数表 参数 类型及说明 hDC Long,要在其中绘图的一个设备场景的句柄 lpsz String,欲描绘的文本字串 n Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1 lpRect RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标) un Long,一个标志位。决定了以何种形式执行绘图。参考DrawText的wFormat参数和下表。其中下表列出的是新增的常数 标志常数 说明 DT_EDITCONTROL 对一个多行编辑控件进行模拟。不显示部分可见的行 DT_ENDELLIPSES 倘若字串不能在矩形里全部容下,就在末尾显示省略号 DT_PATHELLIPSES 如字串包含了 \ 字符,就用省略号替换字串内容,使其能在矩形中全部容下。例如,一个很长的路径名可能换成这样显示——c:\windows\...\doc\readme.txt DT_MODIFYSTRING 如指定了DT_ENDELLIPSES 或 DT_PATHELLIPSES,就会对字串进行修改,使其与实际显示的字串相符 DT_RTLREADING 如选入设备场景的字体属于希伯来或阿拉伯语系,就从右到左描绘文字 lpDrawTextParams DRAWTEXTPARAMS,这个结构包含了附加的绘图参数
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.ScaleMode = 3
Dim R As RECT
SetRect R, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
DrawText Picture1.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER
End Sub
Private Const DT_CENTER = &H1Private Type rect
mleft As Long
mtop As Long
mright As Long
mbottom As Long
End TypePrivate Sub Command1_Click()
Dim rt As rect
rt.mleft = 85: rt.mtop = 0
rt.mright = 97: rt.mbottom = 12DrawText Picture1.hdc, "a", 1, rt, DT_CENTER
End Sub
Picture1.ScaleMode = 3
Dim R As RECT
SetRect R, 0, 0, 97, Picture1.ScaleHeight
lngResult = DrawText(Picture1.hdc, "BS牵引车用蓄电池", -1, R, _
DT_WORDBREAK Or DT_NOPREFIX Or DT_MODIFYSTRING Or _
DT_EDITCONTROL Or DT_CALCRECT)这样为什么,看不到?
DrawText VB声明
Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
说明
将文本描绘到指定的矩形中
返回值
Long,描绘文字的高度
参数表
参数 类型及说明
hdc Long,欲在其中显示文字的一个设备场景的句柄
lpStr String,欲描绘的文本字串
nCount Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1
lpRect RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标)
wFormat Long,一个标志位数组,决定了以何种形式执行绘图。参考下面总结的常数类型列表
标志常数 说明
DT_BOTTOM 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边
DT_CALCRECT 象下面这样计算格式化矩形:多行绘图时矩形的底边根据需要进行延展,以便容下所有文字;单行绘图时,延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值
DT_CENTER 文本垂直居中
DT_EXPANDTABS 描绘文字的时候,对制表站进行扩展。默认的制表站间距是8个字符。但是,可用DT_TABSTOP标志改变这项设定
DT_EXTERNALLEADING 计算文本行高度的时候,使用当前字体的外部间距属性(the external leading attribute)
DT_LEFT 文本左对齐
DT_NOCLIP 描绘文字时不剪切到指定的矩形
DT_NOPREFIX 通常,函数认为 & 字符表示应为下一个字符加上下划线。该标志禁止这种行为
DT_RIGHT 文本右对齐
DT_SINGLELINE 只画单行
DT_TABSTOP 指定新的制表站间距,采用这个整数的高8位
DT_TOP 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部
DT_VCENTER 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部
DT_WORDBREAK 进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志,这里的设置则无效
DrawTextEx VB声明
Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long
说明
与DrawText相似,只是加入了更多的功能
返回值
Long,描绘文字的高度
参数表
参数 类型及说明
hDC Long,要在其中绘图的一个设备场景的句柄
lpsz String,欲描绘的文本字串
n Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1
lpRect RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标)
un Long,一个标志位。决定了以何种形式执行绘图。参考DrawText的wFormat参数和下表。其中下表列出的是新增的常数
标志常数 说明
DT_EDITCONTROL 对一个多行编辑控件进行模拟。不显示部分可见的行
DT_ENDELLIPSES 倘若字串不能在矩形里全部容下,就在末尾显示省略号
DT_PATHELLIPSES 如字串包含了 \ 字符,就用省略号替换字串内容,使其能在矩形中全部容下。例如,一个很长的路径名可能换成这样显示——c:\windows\...\doc\readme.txt
DT_MODIFYSTRING 如指定了DT_ENDELLIPSES 或 DT_PATHELLIPSES,就会对字串进行修改,使其与实际显示的字串相符
DT_RTLREADING 如选入设备场景的字体属于希伯来或阿拉伯语系,就从右到左描绘文字
lpDrawTextParams DRAWTEXTPARAMS,这个结构包含了附加的绘图参数