找回密码
 加入
搜索
查看: 6600|回复: 19

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

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

Example()

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

    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
 EndFunc
如上图示文字显示有问题.
文字垂直居中没问题,问题是如何保持原来的多行显示,而不是变成单行显示并且被截断呢?

本帖子中包含更多资源

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

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

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

评分

参与人数 2金钱 +81 贡献 +2 收起 理由
cashiba + 31 谢谢!
afan + 50 + 2 我很赞同

查看全部评分

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

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

本帖子中包含更多资源

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

×
 楼主| 发表于 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备19019924号-1 )谷歌 百度

GMT+8, 2024-4-19 10:15 , Processed in 0.092219 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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