小甲鱼 发表于 2014-7-14 23:10:29

SetTextAlign

函数功能:

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


API 函数原型:

UINT SetTextAlign(
_In_HDC hdc,
_In_UINT fMode
);

参数解析:


参数 含义
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. 设置左对齐文本的做好方法可以是如下:

SetTextAlign (hdc, GetTextAlign(hdc) & (~TA_CENTER))
或者

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)所有,转载请注明来源。

WinSDK

HALLDY 发表于 2014-12-13 21:44:49

"基准点在正文的基线上",在正文的基线上是什么意思啊

゛落君灬殇丶 发表于 2015-10-2 21:24:30

= =为什么设置老是不正确 SetTextAlign(hdc, TA_CENTER) 不是居中吗为什么不行

love_programe 发表于 2016-3-27 15:38:16

横向对齐和纵向对齐对应的哪两个值啊?

zxcmaqi 发表于 2016-6-26 13:44:48

TA_NOUPDATECP和TA_RTLREADING反了

wa_junye 发表于 2018-5-1 21:07:52

HALLDY 发表于 2014-12-13 21:44
"基准点在正文的基线上",在正文的基线上是什么意思啊

http://bbs.fishc.com/thread-49943-1-2.html不谢,我是吴委员长

cccccyd 发表于 2019-8-19 20:02:39

SetTextAlign (hdc, GetTextAlign(hdc) & (~TA_CENTER));
这句错了吧
默认值是0,0与任何值都是0,最后得到的是错的
应该是或吧
页: [1]
查看完整版本: SetTextAlign