鱼C论坛

 找回密码
 立即注册
查看: 12159|回复: 25

[扩展阅读] 第008讲:如何设置文本对齐模式

[复制链接]
发表于 2014-7-24 17:13:09 | 显示全部楼层 |阅读模式

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

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

x
设置文本对齐

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

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

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


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

  1. switch ((TA_LEFT | TA_RIGHT | TA_CENTER) & GetTextAlign(hdc))
  2. {
  3.     case TA_LEFT:
  4.        .
  5.        .
  6.        .
  7.     case TA_RIGHT:
  8.        .
  9.        .
  10.        .
  11.     case TA_CENTER:
  12.        .
  13.        .
  14.        .
  15. }
复制代码


限定矩形是什么?

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

  1.         case WM_PAINT:
  2.                 hdc = BeginPaint(hwnd, &ps);
  3.                 SetTextAlign(hdc, GetTextAlign(hdc) | TA_RIGHT);
  4.                 TextOut(hdc, 0, 0, TEXT("I love FishC.com!"), 17);
  5.                 EndPaint(hwnd, &ps);
复制代码

会这样显示:

1.png

事实上显示是这样子:

2.png

3.jpeg

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

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

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

4.png




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

使用道具 举报

 楼主| 发表于 2014-7-29 11:43:28 | 显示全部楼层
12月30日 发表于 2014-7-27 18:59
大哥  你好像 错了! [TA_RIGHT         基准点在限定矩形的右边上]
基准点的 右边 不应该有 文字啊!!

请正确理解“基准点”和“限定矩形”的概念。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-7-24 18:20:05 | 显示全部楼层
沙发一个支持下。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-24 21:05:26 | 显示全部楼层
强烈支持小甲鱼!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-27 18:59:48 | 显示全部楼层
大哥  你好像 错了! [TA_RIGHT         基准点在限定矩形的右边上]
基准点的 右边 不应该有 文字啊!!{:1_1:}

点评

请正确理解“基准点”和“限定矩形”的概念。  详情 回复 发表于 2014-7-29 11:43
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-27 22:34:04 | 显示全部楼层
这配图高大上:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-19 23:34:58 | 显示全部楼层
甲鱼妹妹,、:lol: 更新速度啊~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-5 16:25:42 | 显示全部楼层
木有看懂啊,右对齐怎么会什么都没有显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-12 22:08:35 | 显示全部楼层
╰我们兜怕痛゛ 发表于 2014-9-5 16:25
木有看懂啊,右对齐怎么会什么都没有显示

貌似是基准点对齐。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-10 00:24:53 | 显示全部楼层
本帖最后由 asdfg123 于 2015-4-10 00:44 编辑

textout中的x,y坐标应该是限定矩形的基准点的坐标位置,将文字对齐方式设为TA-RIGHT,且继承了原来的TA-TOP等,这样将基准点定位在限定矩形的右上角,又坐标为 0 , 0,这样整个矩形就在客户区之外,自然看不到文字了
2副本.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 8 反对 0

使用道具 举报

发表于 2015-4-28 20:48:23 | 显示全部楼层
甲鱼哥 问个问题 限定矩形的大小怎么确定呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个比较靠谱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不过又好像不对,感觉限定矩形应该是跑到右上角的外面了才对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-10 18:11:11 | 显示全部楼层
:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-13 22:24:48 | 显示全部楼层
鱼哥牛人呀,我自己看<windows程序设计>这本书看了老久了,第三章还没看懂,听鱼哥的视频再看书,思路就清晰多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-6 15:36:44 | 显示全部楼层
本帖最后由 宋桓公 于 2016-7-6 15:41 编辑

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

而限定矩形的理解:
1、不是窗口的内边框。
2、而是字符串本身的外边框~~
3、你设置的坐标,将会是基准点的坐标~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-22 13:09:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-23 22:56:54 | 显示全部楼层
太好了,很清晰明了,感谢小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-27 12:15:54 | 显示全部楼层
复杂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-19 22:24:27 | 显示全部楼层
为什么实际上是空的.................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 10:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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