在API drawtext 中,用何种参数来控制输出文本的字体
在API drawtext 中,用何种参数来控制输出文本的字体,及大小
90分酬谢!
问题点数:90、回复次数:10Top
1 楼uguess(天地间,有我在行走!)回复于 2001-11-29 14:25:00 得分 20
通过改变父控件的Font的字体、大小等属性就行啦。比如在From上DrawText:
with form1
.fontname="宋体"
.fontsize=12
end with
DrawText form1.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER
with form1
.fontname="隶书"
.fontsize=20
end with
DrawText form1.hdc, "World !", Len("World !"), R, DT_CENTER
Top
2 楼DeityFox(逃之11)回复于 2001-11-29 15:21:48 得分 10
对对对,同意楼上
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标志,这里的设置则无效
Top
3 楼uguess(天地间,有我在行走!)回复于 2001-11-30 09:37:45 得分 0
兄弟,不用给分的么?
Top
4 楼sun_star(本来就不懂)回复于 2001-11-30 11:40:58 得分 60
uguess(uguess):您好!
是这样的,你的DrawText form1.hdc, "World !", Len("World !"), R, DT_CENTER中的"R"是什么?是格式化矩形吧,但好像格式化矩形要用DT_CALCRECT参数进行计算,
我碰到的问问题是:在对格式化矩形进行计算的时候,DrawText是用默认的9号字大小进行计算的,若设置设备场景的字体大小,按设置字体的大小进行显示是没有问题,但格式化矩形的大小却是按9号字体来计算的
我这里有一个例子,你要不要研究一下?
Top
5 楼lly9900(lly990)回复于 2001-11-30 11:44:22 得分 0
各位兄弟,DrawText api函数在win2000server下为何不起作用了?Top
6 楼enmity(灵感之源)回复于 2001-11-30 11:54:14 得分 0
DrawText可以在win2k server下运行吖,我这几天才做过测试。
不过,如果输出的是中文的时候,不要用Len()来定义长度,这样会出错的,应该用-1,这样,中文、英文与中英混合都可以正常输出了。Top
7 楼sun_star(本来就不懂)回复于 2001-11-30 13:41:46 得分 0
还有这样一个新问题要注意:场景设备的AUTOREDRAW 要设成TRUE 要注意它的SCALEWIDTH,SCALEHEIGHT
Top
8 楼sun_star(本来就不懂)回复于 2001-11-30 13:41:51 得分 0
还有这样一个新问题要注意:场景设备的AUTOREDRAW 要设成TRUE 要注意它的SCALEWIDTH,SCALEHEIGHT
Top
9 楼liangmeng(chemist)回复于 2001-11-30 15:06:11 得分 0
to sun_star:
你所说的那个DrawText中的R是打印的矩形,用DT_CLACRECT似乎只能改变高度,并不能改变矩形区域的宽度。宽度还是要自己制定的吧?可以采用SetRect设定一下宽度,然后用DT_CLACRECT计算高度,最后再打印。Top
10 楼sun_star(本来就不懂)回复于 2001-11-30 17:59:01 得分 0
1Top




