找回密码
 加入
搜索
查看: 8948|回复: 14

[AU3基础] 如何在PNG图片GUI上再调用PNG图片做按钮?

  [复制链接]
发表于 2010-5-4 18:56:59 | 显示全部楼层 |阅读模式
本帖最后由 woeiwoei 于 2010-5-4 18:59 编辑
#include <GDIPlus.au3>
#include <GuiComboBox.au3>
#include <File.au3>
#include <Array.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <Sound.au3>
#include <Date.au3>
Opt("MustDeclareVars", 0)
Global Const $AC_SRC_ALPHA = 1
_GDIPlus_Startup()
$Src = @scriptdir&"\beijing.png"
$hImage =_GDIPlus_ImageLoadFromFile($Src)
$width =  _GDIPlus_ImageGetWidth ($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
$GUI = GUICreate("beijing", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
SetBitMap($GUI, $hImage, 0)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUISetState()
WinSetOnTop($gui,"",1)
for $i = 0 to 255 step 10
SetBitMap($GUI, $hImage, $i)
next

_WinAPI_DeleteObject($hImage)
_GDIPlus_Shutdown()
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
  if ($hWnd = $GUI) and ($iMsg = $WM_NCHITTEST) then Return $HTCAPTION
EndFunc

Func SetBitmap($hGUI, $hImage, $iOpacity)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
    DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", $iOpacity)
    DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
EndFunc  
While 1
$msg = GUIGetMsg()
    Select
                Case $msg = $GUI_EVENT_CLOSE
               Exit
EndSelect
WEnd
这个只是调用了一个透明的PNG做了背景,请教大大们。
如何在这个背景上再调用一个PNG 做按钮?

这是背景和按钮。
大大们指点下啊。感激不尽~!!

本帖子中包含更多资源

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

×
 楼主| 发表于 2010-5-5 10:13:45 | 显示全部楼层
nnd,我给镶上去了~~
发表于 2010-5-5 10:34:00 | 显示全部楼层
呵呵!上次调用皮肤有瑕疵,这次改用PNG啦?
楼主精神可嘉!值得学习。
发表于 2010-5-5 11:51:50 | 显示全部楼层
占个位置等待高手解答
 楼主| 发表于 2010-5-5 15:37:53 | 显示全部楼层
回复 3# 水木子


    呵呵 功力太弱,上次没搞定,还需再练10年气功~~
 楼主| 发表于 2010-5-5 16:00:39 | 显示全部楼层
最新进展~~


但是就是加不上软件的png图标啊~~郁闷至极~!

本帖子中包含更多资源

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

×
发表于 2010-5-5 16:31:17 | 显示全部楼层
继续加油,,
发表于 2010-5-5 16:43:56 | 显示全部楼层
支持一下。。 顶。。。  等待高手出来
发表于 2010-5-5 16:46:54 | 显示全部楼层
将png图片内置再调用~
 楼主| 发表于 2010-5-5 17:00:10 | 显示全部楼层
本帖最后由 woeiwoei 于 2010-5-5 17:02 编辑
将png图片内置再调用~
afan 发表于 2010-5-5 16:46



    afan大侠。如何内置啊。刚搜索了下内置  有个UDF 但是不会用。。
能再麻烦你一下吗?稍微给我说说~
发表于 2010-5-5 17:24:52 | 显示全部楼层
刚才简单弄了下,可以在png背景上显示png按钮,不过点击按钮图片没响应,现在没时间研究这个~
有个计算器的源码,你搜索下,那个是完全符合你的png背景上显示png按钮的~
 楼主| 发表于 2010-5-5 17:39:24 | 显示全部楼层
刚才简单弄了下,可以在png背景上显示png按钮,不过点击按钮图片没响应,现在没时间研究这个~
有个计算器的 ...
afan 发表于 2010-5-5 17:24



    谢谢超版抽时间看我的问题。。谢谢~!!
 楼主| 发表于 2010-5-9 20:41:34 | 显示全部楼层
在按钮图片上创建个热区。。点击就没什么问题了。。
发表于 2010-5-10 15:18:53 | 显示全部楼层
效果不错,继续关注。。
 楼主| 发表于 2010-5-11 15:26:43 | 显示全部楼层
PNG闪烁的问题基本上解决了。嘿嘿。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 10:55 , Processed in 0.091923 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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