找回密码
 加入
搜索
查看: 19631|回复: 35

[GUI管理] 如何在图片按钮上显示文字?(已解决)

 火... [复制链接]
发表于 2011-2-9 15:59:45 | 显示全部楼层 |阅读模式
本帖最后由 qq342252004 于 2011-2-12 10:00 编辑

如何在图片按钮上显示文字?
已解决,用15楼的方法。

本帖子中包含更多资源

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

×
发表于 2011-2-9 16:23:28 | 显示全部楼层
GUICtrlCreateLabel

评分

参与人数 1金钱 +50 收起 理由
qq342252004 + 50 谢谢关注!

查看全部评分

 楼主| 发表于 2011-2-9 16:27:38 | 显示全部楼层
GUICtrlCreateLabel
水木子 发表于 2011-2-9 16:23

试过用GUICtrlCreateLabel了,被图片覆盖了看不到文字。
发表于 2011-2-9 16:48:56 | 显示全部楼层
先创建图片(按钮),再创建文字。
发表于 2011-2-9 16:53:24 | 显示全部楼层
$hPic = GUICtrlCreatePic("", 400, 145, 128, 128)
GUICtrlSetState(-1, $GUI_DISABLE)
我是这样做的

评分

参与人数 1金钱 +50 收起 理由
qq342252004 + 50 谢谢关注!

查看全部评分

发表于 2011-2-9 16:55:47 | 显示全部楼层
本帖最后由 水木子 于 2011-2-9 16:57 编辑


GUICreate("Form1", 400, 300)
GUICtrlSetDefBkColor(-2)
GUICtrlCreatePic("button3.gif", 50, 50, 150, 50)
GUICtrlCreateLabel("这是按钮文本", 90, 70, 80, 17)
GUISetState()

Do 
Until GUIGetMsg() = -3


本帖子中包含更多资源

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

×
 楼主| 发表于 2011-2-9 18:45:55 | 显示全部楼层
我是这样做的
Hen5ei 发表于 2011-2-9 16:53

看来不是那么简单
 楼主| 发表于 2011-2-9 18:47:58 | 显示全部楼层
水木子 发表于 2011-2-9 16:55

有时间的话可以用我提供的附件试试怎么样才可以显示文字又不会失去鼠标移到图片按钮上时显示另一张图片的功能吗?
发表于 2011-2-9 18:51:24 | 显示全部楼层
我明白你的意思,你就是要做成两种状态的图片按钮嘛!

普通状态和鼠标悬停状态,没错,就是我那样。
发表于 2011-2-9 19:21:32 | 显示全部楼层
回复 9# 水木子

PNG不是这么做的。

评分

参与人数 1金钱 +20 收起 理由
qq342252004 + 20 谢谢关注!

查看全部评分

 楼主| 发表于 2011-2-9 20:40:33 | 显示全部楼层
回复  水木子

PNG不是这么做的。
republican 发表于 2011-2-9 19:21

你有办法解决这个问题吗?
发表于 2011-2-9 21:20:16 | 显示全部楼层
水木子的代码很不错,简单明了,学习了!
发表于 2011-2-9 21:25:08 | 显示全部楼层
回复 11# qq342252004

实在不好意思,看来是我思维定向了,没注意你是用的PNG。
发表于 2011-2-9 21:48:59 | 显示全部楼层
回复 11# qq342252004

很抱歉,没有现成的例子。

要不你自己创建画板,实时渲染图片吧。
发表于 2011-2-9 23:40:47 | 显示全部楼层
本帖最后由 xxoojoeooxx 于 2011-2-10 03:10 编辑


有点乱
将就用一下巴

#Include <WinAPI.au3>
#Include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $ButtunCount=10 ;按钮数量
Global $P[$ButtunCount+1][8] 
Local $Pi[$ButtunCount]
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT") 
_GDIPlus_StartUp () 
$hImage = _GDIPlus_ImageLoadFromFile ("001.png") 
$hImage1 = _GDIPlus_ImageLoadFromFile ("002.png") 
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 450, 450)
;GUICtrlCreatePicB(文本,文本左侧,文本顶部,接下来就是GUICtrlCreatePic原来的参数
$Pi[0] = GUICtrlCreatePicB("1",5,5,"", 16, 24, 180, 36,$WS_CLIPSIBLINGS)
$Pi[1] = GUICtrlCreatePicB("2",5,5,"", 243, 24, 180, 36,$WS_CLIPSIBLINGS)
$Pi[2] = GUICtrlCreatePicB("3",5,5,"", 16, 82, 180, 36,$WS_CLIPSIBLINGS)
$Pi[3] = GUICtrlCreatePicB("4",5,5,"", 243, 82, 180, 36,$WS_CLIPSIBLINGS)
$Pi[4] = GUICtrlCreatePicB("5",5,5,"", 16, 140, 180, 36,$WS_CLIPSIBLINGS)
$Pi[5] = GUICtrlCreatePicB("6",5,5,"", 243, 140, 180, 36,$WS_CLIPSIBLINGS)
$Pi[6] = GUICtrlCreatePicB("7",5,5,"", 16, 198, 180, 36,$WS_CLIPSIBLINGS)
$Pi[7] = GUICtrlCreatePicB("8",5,5,"", 243, 198, 180, 36,$WS_CLIPSIBLINGS)
$Pi[8] = GUICtrlCreatePicB("9",5,5,"", 16, 256, 180, 36,$WS_CLIPSIBLINGS)
$Pi[9] = GUICtrlCreatePicB("0",5,5,"", 243, 256, 180, 36,$WS_CLIPSIBLINGS)
$Pic = _GDIPlus_GraphicsCreateFromHWND ($Form1) 
_WinAPI_InvalidateRect(WinGetHandle($Form1)) 
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
        $Pos = GUIGetCursorInfo($Form1)
        For $i=1 To $P[0][0] ;$P[0][0] 为GUICtrlCreatePicB建立按钮的数量 $i为按钮编号
                If $Pos[4] = $Pi[$i-1]  And $P[$i][4] = 0 Then
                        ;If $Pos[2]=1 Then

                        ;Else 
                                _GDIPLus_GraphicsDrawImageRect($Pic, $hImage1, $P[$i][0], $P[$i][1], $P[$i][2], $P[$i][3])
                                _GDIPlus_GraphicsDrawString($Pic,$P[$i][5],$P[$i][0]+$P[$i][6], $P[$i][1]+$P[$i][7])
                                $P[$i][4] = 1
                        ;Endif
                ElseIf $Pos[4] <> $Pi[$i-1] And $P[$i][4]= 1 Then
                        _GDIPLus_GraphicsDrawImageRect($Pic, $hImage,$P[$i][0], $P[$i][1], $P[$i][2], $P[$i][3])         
                        _GDIPlus_GraphicsDrawString($Pic,$P[$i][5],$P[$i][0]+$P[$i][6], $P[$i][1]+$P[$i][7])                                
                        $P[$i][4] = 0
                        
                EndIf
        Next

WEnd

_GDIPlus_GraphicsDispose ($Pic)
_GDIPlus_ImageDispose ($hImage) 
_GDIPlus_ImageDispose ($hImage1) 
_GDIPlus_ShutDown () 

Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam) 
        _WinAPI_RedrawWindow($Form1, 0, 0, $RDW_UPDATENOW) 
        For $i=1 To $P[0][0]
                _GDIPLus_GraphicsDrawImageRect($Pic, $hImage, $P[$i][0], $P[$i][1], $P[$i][2], $P[$i][3])
                _GDIPlus_GraphicsDrawString($Pic,$P[$i][5],$P[$i][0]+$P[$i][6], $P[$i][1]+$P[$i][7])                
        Next
        _WinAPI_RedrawWindow($Form1, 0, 0, $RDW_VALIDATE) 
     Return $GUI_RUNDEFMSG 
 EndFunc   ;==>MY_WM_PAINT
 
 Func GUICtrlCreatePicB($txt,$tx,$ty,$pic,$x,$y,$w=-1,$h=-1,$sy=-1,$ex=-1)
        $P[0][0]+=1 ;按钮数量
        $P[$P[0][0]][0]=$x ;左侧
        $P[$P[0][0]][1]=$y ;顶部
        $P[$P[0][0]][2]=$w ;宽度
        $P[$P[0][0]][3]=$h ;高度
        $P[$P[0][0]][4]=0 ;Hover
        $P[$P[0][0]][5]=$txt ;文本
        $P[$P[0][0]][6]=$tx ;文本左侧
        $P[$P[0][0]][7]=$ty ;文本顶部
        Return GUICtrlCreatePic($pic,$x,$y,$w,$h,$sy,$ex)
EndFunc

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +60 贡献 +15 收起 理由
qq342252004 + 60 + 15 非常感谢,有待你进一步的开拓。

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 21:42 , Processed in 0.098292 second(s), 31 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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