找回密码
 加入
搜索
查看: 12729|回复: 21

如何用图片做按钮?

 火... [复制链接]
发表于 2009-12-23 16:28:11 | 显示全部楼层 |阅读模式
本帖最后由 Cisoce 于 2009-12-24 09:32 编辑

请问如何用图片做按钮控件呢?就是把按钮控件换成图片?

还有就是那个优化向导界面,是怎么做的呢,就是点击下一步,就会换一个界面那种,请高手不吝赐教谢谢

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2009-12-23 18:43:08 | 显示全部楼层
理论上任何控件都响应鼠标点击,按钮控件也可做的很漂亮。忘记怎么做了。
“下一步”就删除和添加一些控件,改变一些文本。
发表于 2009-12-23 23:40:25 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include '_dButton.au3'
$Gui = GUICreate("动态按钮he控件指示", 300, 200, -1, -1, $WS_POPUP)
$ex=GUICtrlCreateLabel(" X ", 280, 2, 17, 12) 
WinSetTrans($Gui, "", 255);必须要使用此函数,即使透明值设置为255,也就是不透明都可以,但是不能没有
$btn_ok = GUICtrlCreateButton("", 100, 47, 100, 26, $BS_BITMAP )
GUICtrlSetImage(-1, "Bitmap_181.bmp")
GUICtrlSetCursor(-1, 0)
$btn_ex = GUICtrlCreateButton("", 100, 80, 32, 32, $BS_ICON)
GUICtrlSetImage(-1, "Bitmap_181.ico")
GUICtrlSetCursor(-1, 0)
$btn_tt = GUICtrlCreatePic("Bitmap_181.bmp", 100, 120, 100, 26)
GUICtrlSetCursor(-1, 0)
$Pic1 = GUICtrlCreatePic("bg.jpg", 0, 0, 300, 200, $WS_CLIPSIBLINGS)
GUICtrlCreateLabel("", 0, 0, 300, 100, $WS_CLIPSIBLINGS, $GUI_WS_EX_PARENTDRAG)
$label=GUICtrlCreateLabel("当鼠标处于本行文字上方,将进行提示", 50, 15 ) 
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xff0000) 
GUISetState(@SW_SHOW)
While 1
        If _Mouse_top($Gui,$label)=1 Then MsgBox(0,'提示','鼠标移动到了label控件上')
        If _Mouse_top($Gui,$ex)=1 Then
        $mouse = MouseGetPos()
        ToolTip ( "点击退出" , $mouse[0]+10 , $mouse[1]+15 )
        Else
        ToolTip ("")
        EndIf
        _dButton($Gui, $btn_ok, "Bitmap_181.bmp", "Bitmap_186.bmp", "Bitmap_187.bmp")
        _dButton($Gui, $btn_ex, "Bitmap_181.ico", "Bitmap_186.ico", "Bitmap_187.ico")
        _dButton($Gui, $btn_tt, "Bitmap_181.bmp", "Bitmap_186.bmp", "Bitmap_187.bmp")
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE,$ex
                        Exit
                Case $btn_ok
                        MsgBox(0,'提示','BMP图片按钮被点击')
                Case $btn_ex
                        MsgBox(0,'提示','ICO图标按钮被点击')
                Case $btn_tt
                        MsgBox(0,'提示','图片控件被点击')
        EndSwitch
wend
UDF
;
;===============================================================================
;
; 函数名称:    _dButton($Gui_id, $btn_ctrlid, $z_img, $j_img, $a_img)
; 描    述:    创建动态按钮
; 参    数:     $Gui_id                                        : 窗口句柄
;                                $btn_ctrlid                - (必须): 按钮句柄
;                                $z_img                         - (可选): 按钮正常时的图片
;                                $j_img                        - (可选): 鼠标经过按钮时的图片
;                                $a_img                        - (可选): 鼠标左键点击时的图片
; 要    求:   1、AutoIt3 V3.3.0.0 汉化版 测试OK
;                          2、必须要使用WinSetTrans函数,即使透明值设置为255,也就是不透明都可以,但是不能没有
; UDF 作者:   钟隐 (http://hi.baidu.com/rhc1987527)
; ACN ID:     298311657
;
;===============================================================================
;


Func _dButton($Gui_id, $btn_ctrlid, $z_img, $j_img, $a_img)
        If WinActive($Gui_id) Then
                $mouse = GUIGetCursorInfo($Gui_id)
                If $mouse[4] = $btn_ctrlid Then
                        If $mouse[2] = 1 Then
                                GUICtrlSetImage($btn_ctrlid, $a_img)
                        Else
                                GUICtrlSetImage($btn_ctrlid, $j_img)
                        EndIf
                Else
                        GUICtrlSetImage($btn_ctrlid, $z_img)
                EndIf
        EndIf
EndFunc   ;==>_dButton


;
;===============================================================================
;
; 函数名称:    _Mousetop($Gui_id,$ctrl_id)
; 描    述:    检测鼠标是否处于指定控件上方
; 参    数:     $Gui_id                                        : 窗口句柄
;                                $ctrl_id                                : 按钮句柄
; 要    求:   AutoIt3 V3.3.0.0 汉化版 测试OK
;
; 返 回 值:     1 表示鼠标位于指定窗口的控件上。
;                    0 表示鼠标没有在指定窗口的控件上。
;
; 示        例:                If _Mouse_top($Gui,$btn_ok)=1 Then MsgBox(0,'','')
;
; UDF 作者:   钟隐 (http://hi.baidu.com/rhc1987527)
; ACN        ID:   298311657
;
;===============================================================================
;
Func _Mouse_top($Gui_id, $ctrl_id)
        If WinActive($Gui_id) Then
                $mouse = GUIGetCursorInfo($Gui_id)
                If $mouse[4] = $ctrl_id Then
                        Return 1
                Else
                        Return 0
                EndIf
        EndIf
EndFunc   ;==>_Mouse_top
完整文件打包:(包含UDF、示例源码、示例图片)

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
afan + 30 + 5

查看全部评分

发表于 2009-12-23 23:46:32 | 显示全部楼层
回复 3# 298311657


    好像大家都没有注意点击图片控件时是响应的鼠标按下动作,与按钮的响应弹起有区别,有同此顾虑的不知道多不多,呵呵~ 有时间修改下~
发表于 2009-12-24 09:10:53 | 显示全部楼层
说得好。。。。
发表于 2010-3-10 14:32:50 | 显示全部楼层
这个不错。。一会研究下。。
发表于 2010-10-13 22:28:44 | 显示全部楼层
感觉不错,论坛里面还是高手多呀
发表于 2010-10-14 13:00:35 | 显示全部楼层
'鼠标移动到了label控件上'这个提示反应有点迟钝,要等1秒才会出来
发表于 2011-4-9 13:04:29 | 显示全部楼层
学习了,下来试试
发表于 2011-5-10 12:44:46 | 显示全部楼层
多谢三楼。。
发表于 2011-5-10 12:48:06 | 显示全部楼层
回复 1# Cisoce

第二个可以做个内嵌的gui试试
发表于 2011-5-10 13:07:01 | 显示全部楼层

本帖子中包含更多资源

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

×
发表于 2011-5-10 13:33:07 | 显示全部楼层
学习了  但是用图片做按钮会不会降低程序的效率呢
发表于 2011-5-10 23:12:55 | 显示全部楼层
回复 12# 阿祥


    你这张图片太诡异了,一会有一回没有,我以为我的QQ出问题了呢,吓我一跳呢
发表于 2011-5-10 23:13:12 | 显示全部楼层
学习了  但是用图片做按钮会不会降低程序的效率呢
haijie1223 发表于 2011-5-10 13:33



    我也这么想,,,,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 07:39 , Processed in 0.088123 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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