关于DRAWTEXT函数

BadCatw 2003-05-20 08:35:56
我用 DrawText 函数 在一距形内可以水平,垂直居中显示文字,但是文字自动换行后,垂直居中就不能用了.请问如何让水平,垂直居中,并且可以自动换行.因为要多次显示文字,自己判断并处理就太慢了,有没有什么其他函数可以实现这样的功能?
...全文
146 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vataii 2003-05-21
  • 打赏
  • 举报
回复
楼上的很正规咯,真有水平
呵呵
junwhj 2003-05-20
  • 打赏
  • 举报
回复
先加上DT_CALCRECT标志画一次(不会真的画出到hDC上),得到lpRect,然后再根据垂直对齐方式调整lpRect,再去掉DT_CALCRECT标志重画。
BadCatw 2003-05-20
  • 打赏
  • 举报
回复
to rainstormmaster(rainstormmaster) :谢谢,这个问题已经想到了解决方法.不过速度不是很快,看看有没有其他方法.
rainstormmaster 2003-05-20
  • 打赏
  • 举报
回复
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标志,这里的设置则无效



BadCatw 2003-05-20
  • 打赏
  • 举报
回复
没人回答?晕.

1,486

社区成员

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

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