第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 12月30日 发表于 2014-7-27 18:59
大哥你好像 错了!
基准点的 右边 不应该有 文字啊!!
请正确理解“基准点”和“限定矩形”的概念。 沙发一个支持下。。。。。。。。。 强烈支持小甲鱼!!!!!!!!!!!! 大哥你好像 错了!
基准点的 右边 不应该有 文字啊!!{:1_1:} 这配图高大上:lol: 甲鱼妹妹,、:lol: 更新速度啊~~ 木有看懂啊,右对齐怎么会什么都没有显示 ╰我们兜怕痛゛ 发表于 2014-9-5 16:25
木有看懂啊,右对齐怎么会什么都没有显示
貌似是基准点对齐。。。 本帖最后由 asdfg123 于 2015-4-10 00:44 编辑
textout中的x,y坐标应该是限定矩形的基准点的坐标位置,将文字对齐方式设为TA-RIGHT,且继承了原来的TA-TOP等,这样将基准点定位在限定矩形的右上角,又坐标为 0 , 0,这样整个矩形就在客户区之外,自然看不到文字了
甲鱼哥 问个问题 限定矩形的大小怎么确定呢? asdfg123 发表于 2015-4-10 00:24
textout中的x,y坐标应该是限定矩形的基准点的坐标位置,将文字对齐方式设为TA-RIGHT,且继承了原来的TA-TOP ...
这个比较靠谱 asdfg123 发表于 2015-4-10 00:24
textout中的x,y坐标应该是限定矩形的基准点的坐标位置,将文字对齐方式设为TA-RIGHT,且继承了原来的TA-TOP ...
不过又好像不对,感觉限定矩形应该是跑到右上角的外面了才对 :lol: 鱼哥牛人呀,我自己看<windows程序设计>这本书看了老久了,第三章还没看懂,听鱼哥的视频再看书,思路就清晰多了 本帖最后由 宋桓公 于 2016-7-6 15:41 编辑
原来是这样~~
基准点可以设置在限定矩形的“任意位置”
(位置选择具体查看http://bbs.fishc.com/thread-49489-1-1.html)
而限定矩形的理解:
1、不是窗口的内边框。
2、而是字符串本身的外边框~~
3、你设置的坐标,将会是基准点的坐标~~ {:5_91:} 太好了,很清晰明了,感谢小甲鱼 复杂{:5_107:} 为什么实际上是空的.................{:10_249:}
页:
[1]
2