鱼C论坛

 找回密码
 立即注册
查看: 9423|回复: 6

[API档案] SetTextAlign

[复制链接]
发表于 2014-7-14 23:10:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
函数功能:

SetTextAlign 函数为指定设备环境设置文本的对齐标志。


API 函数原型:

  1. UINT SetTextAlign(
  2.   _In_  HDC hdc,
  3.   _In_  UINT fMode
  4. );
复制代码


参数解析:

参数 含义
hdc 指定设备环境句柄
fMode1. 文本对齐标志
2. 在横向对齐和纵向对齐标志中只能选择一个
3. 两个标志只能选择一个来改变当前的位置

使用下面的列表中的掩码指定文本对齐方式:

含义
TA_BASELINE 基准点在正文的基线上
TA_BOTTOM 基准点在限定矩形的底边上(限定矩形的含义请看下边备注)
TA_TOP 基准点在限定矩形的顶边上
TA_CENTER 基准点在限定矩形的中心水平对齐位置
TA_LEFT 基准点在限定矩形的左边上
TA_RIGHT 基准点在限定矩形的右边上
TA_NOUPDATECP 1. 适用于中东 Windows 版本:正文从右到左的阅读顺序排列,与缺省的从左到右正好相反
2. 只有当被选择的字体是 Hebrew 或 Arabic 时,此值才有用
TA_RTLREADING 每次输出调用后当前状态不改变
TA_UPDATECP 每次输出调用后当前状态改变

若当前字体有一条缺省的垂直基线(如Kanji),下列值用于取代 TA_BASELINE 和 TA_CENTER:

含义
VTA_BASELINE 基准点在正文的基线上
VTA_CENTER 基准点与限定矩形的中心垂直对齐


默认值是 TA_LEFT, TA_TOP 和 TA_NOUPDATECP。


返回值:

1. 如果函数调用失败,返回值是 GDI_ERROR;

2. 如果函数调用成功,返回值是文字对齐方式的前一个设置。


备注:

1. 限定矩形是指能将正文字符串的所有字符单元限定于其中的矩形

2. TextOut 和 ExtTextOut 函数用文字对齐标志来将一个正文字符串定位于显示器或者其他设备

3. 该标志指定了基准点与限定正文的矩形的位置关系,基准点可以是当前位置,也可是传给正文输出函数的一个点

4. 设置左对齐文本的做好方法可以是如下:

  1. SetTextAlign (hdc, GetTextAlign(hdc) & (~TA_CENTER))
复制代码

或者

  1. SetTextAlign (hdc,TA_LEFT | <other flags>)
复制代码

你当然可以使用 SetTextAlign (hdc, TA_LEFT) 来达到这个目的,但是这个方法会丢失所有的垂直基线或者从右到左的设置。

5. 调用 SetTextAlign 函数时,如果使用 TA_UPDATECP 标志,Windows 会忽略 TextOut 的 xStart 和 yStart 参数,而使用由 MoveToEx、LineTo 或更改目前位置的另一个函数设定的位置。

【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-13 21:44:49 | 显示全部楼层
"基准点在正文的基线上",在正文的基线上是什么意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-2 21:24:30 | 显示全部楼层
= =为什么设置老是不正确 SetTextAlign(hdc, TA_CENTER) 不是居中吗  为什么不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-27 15:38:16 | 显示全部楼层
横向对齐和纵向对齐对应的哪两个值啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-26 13:44:48 | 显示全部楼层
TA_NOUPDATECP和TA_RTLREADING反了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-1 21:07:52 | 显示全部楼层
HALLDY 发表于 2014-12-13 21:44
"基准点在正文的基线上",在正文的基线上是什么意思啊

http://bbs.fishc.com/thread-49943-1-2.html  不谢,我是吴委员长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-19 20:02:39 | 显示全部楼层
SetTextAlign (hdc, GetTextAlign(hdc) & (~TA_CENTER));
这句错了吧
默认值是0,0与任何值都是0,最后得到的是错的
应该是或吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-16 12:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表