找回密码  加入

AUTOIT CN

搜索
查看: 2031|回复: 19

[交流] Label等静态控件如何让文字垂直居中并且保持原来的多行显示?

[复制链接]
发表于 2017-3-6 11:59:28 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2017-3-10 22:55 编辑
  1. #include <GUIConstantsEx.au3>
  2. #Include <Staticconstants.Au3>

  3. Example()

  4. Func Example()
  5.     GUICreate("Label")
  6.     GUICtrlCreateLabel("锦瑟无端五十弦,一弦一柱思华年。", 10, 10, 100, 70,8388608+$Ss_Center)
  7.     GUICtrlCreateLabel("庄生晓梦迷蝴蝶,望帝春心托杜鹃。", 10, 90, 100, 70,8388608+$Ss_Centerimage)
  8.     GUICtrlCreateLabel("沧海月明珠有泪,蓝田日暖玉生烟。", 10, 170,100, 70,8388608)
  9.     GUICtrlCreateLabel("此情可待成追忆,只是当时已惘然。", 10, 250,100, 70,8388608+$Ss_Centerimage)
  10.     GUICtrlCreateLabel("--锦瑟 ·李商隐", 10, 330,100,70,8388608+$Ss_Right)

  11.     GUISetState(@SW_SHOW)

  12.     While 1
  13.         Switch GUIGetMsg()
  14.             Case $GUI_EVENT_CLOSE
  15.                 ExitLoop
  16.         EndSwitch
  17.     WEnd
  18. EndFunc
复制代码

如上图示文字显示有问题.
文字垂直居中没问题,问题是如何保持原来的多行显示,而不是变成单行显示并且被截断呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
发表于 2017-3-6 14:30:09 | 显示全部楼层
好像不能这样。
发表于 2017-3-6 17:28:29 | 显示全部楼层
利用换行符比较累
  1. #include <GUIConstantsEx.au3>
  2. #Include <Staticconstants.Au3>
  3. Example()
  4. Func Example()
  5.     GUICreate("Label")
  6.     GUICtrlCreateLabel('我' & @CRLF & '是' & @CRLF & '例' & @CRLF & '子',100,100,80,100,0x2000)
  7.     GUISetState(@SW_SHOW)

  8.     While 1
  9.         Switch GUIGetMsg()
  10.             Case $GUI_EVENT_CLOSE
  11.                 ExitLoop
  12.         EndSwitch
  13.     WEnd
  14. EndFunc
复制代码
发表于 2017-3-6 18:00:09 | 显示全部楼层
  1. GUICreate("Test", 200, 100)
  2. GUICtrlCreateLabel(StringFormat('我\n才是\n好例\n子'),10,20,180,80,BitOR(0x01,0x2000))
  3. GUISetState()
  4. Do
  5.   Sleep(10)
  6. Until GUIGetMsg()= -3
复制代码
 楼主| 发表于 2017-3-6 21:20:14 | 显示全部楼层
好像都达不到效果阿....
发表于 2017-3-7 00:23:56 | 显示全部楼层
感觉楼主有点过于呆板了,虽然5#的图看起来很灵俏.
  1. GUICtrlCreateLabel(StringFormat("  \n  \n此情可待成追忆,\n只是当时已惘然。"), 10, 250,100, 70,8388608+BitOR(0x01,0x2000))
复制代码

评分

2

查看全部评分

 楼主| 发表于 2017-3-7 18:13:32 | 显示全部楼层
本帖最后由 cashiba 于 2017-3-7 21:07 编辑
感觉楼主有点过于呆板了,虽然5#的图看起来很灵俏.
Alam 发表于 2017-3-7 00:23

看起来是目前最好的解决办法了....
只是觉得像这样用换行符的效果不太好控制,上面的例子是为了演示,label高度都很大,如果小点的那种,就没那么方便了
  1. #include <GUIConstantsEx.au3>
  2. #Include <Staticconstants.Au3>
  3. Example()
  4. Func Example()
  5.     GUICreate("Label")
  6.     GUICtrlCreateLabel(StringFormat("锦瑟无端五十弦,\n一弦一柱思华年。"), 10, 10, 100, 35,8388608+BitOR(0x01,0x2000))
  7.     GUICtrlCreateLabel(StringFormat("\n庄生晓梦迷蝴蝶,\n望帝春心托杜鹃。"), 10, 55, 100, 50,8388608+BitOR(0x01,0x2000))
  8.     GUICtrlCreateLabel(StringFormat("\n\n沧海月明珠有泪,\n蓝田日暖玉生烟。"), 10,115,100, 65,8388608+BitOR(0x01,0x2000))
  9.     GUICtrlCreateLabel(StringFormat("\n\n此情可待成追忆,\n只是当时已惘然。"), 10, 195,100, 80,8388608+BitOR(0x01,0x2000))
  10.     GUICtrlCreateLabel(StringFormat("\n\n--锦瑟 ·李商隐"), 10, 290,100,70,8388608+$Ss_Right)
  11.     GUISetState(@SW_SHOW)
  12.     While 1
  13.         Switch GUIGetMsg()
  14.             Case $GUI_EVENT_CLOSE
  15.                 ExitLoop
  16.         EndSwitch
  17.     WEnd
  18. EndFunc
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入

x
 楼主| 发表于 2017-3-7 21:12:29 | 显示全部楼层
不用$Ss_Centerimage和$bs_center参数的时候,文字是很自然的触边自动换行.
自然的就是好....
发表于 2017-3-7 22:43:50 | 显示全部楼层
你这样写,为了什么,
如果想换行直接用 @CRLF换行不就行了
发表于 2017-3-7 23:06:31 | 显示全部楼层
回复 6# Alam


    有没有办法达到 上下居中,长度超过的话能自动换行
发表于 2017-3-7 23:12:55 | 显示全部楼层
本帖最后由 skysmile 于 2017-3-7 23:16 编辑

回复 10# 1361739590
垂直居中可以用 BitOR($ss_center,$bs_center)
发表于 2017-3-7 23:16:17 | 显示全部楼层
回复 11# skysmile


    不会换行。
发表于 2017-3-7 23:18:18 | 显示全部楼层
BitOR($ss_center,$bs_center,$BS_MULTILINE)
发表于 2017-3-7 23:24:24 | 显示全部楼层
回复 13# skysmile


    一样不行。
发表于 2017-3-8 13:08:19 | 显示全部楼层
回复 13# skysmile
BS系列是按钮的样式啊……你说话前就没有自己试试?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备15028933号-3 )谷歌 百度

GMT+8, 2018-12-19 14:25 , Processed in 0.108808 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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