小甲鱼 发表于 2014-7-24 17:13:09

第008讲:如何设置文本对齐模式

设置文本对齐

你可以使用 GetTextAlign 和 SetTextAlign 函数,来获得和设置指定一个设备环境的文本对齐模式。

文本对齐方式决定字符串在窗口的相对基准点。

你可以设置文本左对齐、右对齐和居中,甚至可以设置顶边对齐和底边对齐。


下边将演示如何获得当前的对齐模式:

switch ((TA_LEFT | TA_RIGHT | TA_CENTER) & GetTextAlign(hdc))
{
    case TA_LEFT:
       .
       .
       .
    case TA_RIGHT:
       .
       .
       .
    case TA_CENTER:
       .
       .
       .
}

限定矩形是什么?

小甲鱼觉得很多朋友会认为,下边代码:

      case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                SetTextAlign(hdc, GetTextAlign(hdc) | TA_RIGHT);
                TextOut(hdc, 0, 0, TEXT("I love FishC.com!"), 17);
                EndPaint(hwnd, &ps);
会这样显示:



事实上显示是这样子:





造成这样“误会”的原因是没理解清楚“限定矩形”的概念(大部分朋友理解成窗口的内边框)。


值 含义
TA_RIGHT 基准点在限定矩形的右边上

限定矩形是指能将正文字符串的所有字符单元限定于其中的矩形,而不是窗口的内边框:






WinSDK

小甲鱼 发表于 2014-7-29 11:43:28

12月30日 发表于 2014-7-27 18:59
大哥你好像 错了!
基准点的 右边 不应该有 文字啊!!

请正确理解“基准点”和“限定矩形”的概念。

Angel丶L 发表于 2014-7-24 18:20:05

沙发一个支持下。。。。。。。。。

聪聪online 发表于 2014-7-24 21:05:26

强烈支持小甲鱼!!!!!!!!!!!!

12月30日 发表于 2014-7-27 18:59:48

大哥你好像 错了!
基准点的 右边 不应该有 文字啊!!{:1_1:}

沉思的牛 发表于 2014-7-27 22:34:04

这配图高大上:lol:

xiamigame 发表于 2014-8-19 23:34:58

甲鱼妹妹,、:lol: 更新速度啊~~

╰我们兜怕痛゛ 发表于 2014-9-5 16:25:42

木有看懂啊,右对齐怎么会什么都没有显示

黑夜、微渺的光 发表于 2014-10-12 22:08:35

╰我们兜怕痛゛ 发表于 2014-9-5 16:25
木有看懂啊,右对齐怎么会什么都没有显示

貌似是基准点对齐。。。

asdfg123 发表于 2015-4-10 00:24:53

本帖最后由 asdfg123 于 2015-4-10 00:44 编辑

textout中的x,y坐标应该是限定矩形的基准点的坐标位置,将文字对齐方式设为TA-RIGHT,且继承了原来的TA-TOP等,这样将基准点定位在限定矩形的右上角,又坐标为 0 , 0,这样整个矩形就在客户区之外,自然看不到文字了

laishiba 发表于 2015-4-28 20:48:23

甲鱼哥 问个问题 限定矩形的大小怎么确定呢?

陡壁 发表于 2015-6-26 08:24:22

asdfg123 发表于 2015-4-10 00:24
textout中的x,y坐标应该是限定矩形的基准点的坐标位置,将文字对齐方式设为TA-RIGHT,且继承了原来的TA-TOP ...

这个比较靠谱

陡壁 发表于 2015-6-26 08:26:55

asdfg123 发表于 2015-4-10 00:24
textout中的x,y坐标应该是限定矩形的基准点的坐标位置,将文字对齐方式设为TA-RIGHT,且继承了原来的TA-TOP ...

不过又好像不对,感觉限定矩形应该是跑到右上角的外面了才对

智商是硬伤 发表于 2015-8-10 18:11:11

:lol:

6666小土豆 发表于 2015-10-13 22:24:48

鱼哥牛人呀,我自己看<windows程序设计>这本书看了老久了,第三章还没看懂,听鱼哥的视频再看书,思路就清晰多了

宋桓公 发表于 2016-7-6 15:36:44

本帖最后由 宋桓公 于 2016-7-6 15:41 编辑

原来是这样~~
基准点可以设置在限定矩形的“任意位置”
(位置选择具体查看http://bbs.fishc.com/thread-49489-1-1.html)

而限定矩形的理解:
1、不是窗口的内边框。
2、而是字符串本身的外边框~~
3、你设置的坐标,将会是基准点的坐标~~

谦虚求学 发表于 2016-10-22 13:09:09

{:5_91:}

hustjinghu 发表于 2016-10-23 22:56:54

太好了,很清晰明了,感谢小甲鱼

谦虚求学 发表于 2016-10-27 12:15:54

复杂{:5_107:}

fishermanmax 发表于 2017-1-19 22:24:27

为什么实际上是空的.................{:10_249:}
页: [1] 2
查看完整版本: 第008讲:如何设置文本对齐模式