PNG透明效果..未完成!算了结贴了!!!
来论坛之后,人生第一贴,请大大们多帮忙......最小化.时钟...不对...想用INI文件来配置发现没作用!#NoTrayIcon
#include <A3LGDIPlus.au3>
; $i = "confing.ini"
; $A1 = IniRead($i, "基本配置", "菜单标题", "")
; $A2 = IniRead($i, "基本配置", "公告", "")
; $B = IniRead($i, "菜单设置", "菜单名称"&, "")
; $C= IniRead($i, "菜单设置", "菜单说明"&, "")
; $png =IniRead($i, "菜单设置", "图片路径"&, "")
; $run =IniRead($i, "菜单设置", "执行文件"&, "")
Opt("MustDeclareVars", 0)
Global Const $AC_SRC_ALPHA = 1
Global Const $ULW_ALPHA = 2
Global $old_string = "", $runthis = ""
Global $launchDir = @DesktopDir
Local $controlGui, $text1
_GDIP_Startup()
$pngSrc = @scriptdir&"\client.png"
$hImage = _GDIP_ImageLoadFromFile($pngSrc)
$width =_GDIP_ImageGetWidth ($hImage)
$height = _GDIP_ImageGetHeight($hImage)
$GUI = GUICreate("launcher", $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
$controlGui = GUICreate("ControlGUI", $width, $height, 0,0,$WS_POPUP,BitOR($WS_EX_LAYERED,$WS_EX_MDICHILD),$gui)
GUICtrlCreatePic(@ScriptDir & "\grey.gif",0,0,$width,$height)
GuiCtrlSetState(-1,$GUI_DISABLE)
GUICtrlCreateLabel("QQ菜单 V1.0", 70, 7, 140, 50)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)
$goButton = GUICtrlCreateButton("x", 450, 22, 10, 10, $BS_DEFPUSHBUTTON)
$goButton1 = GUICtrlCreateButton("+", 420, 22, 10, 10, $BS_DEFPUSHBUTTON)
$goButton2 = GUICtrlCreateButton("-", 390, 22, 10, 10, $BS_DEFPUSHBUTTON)
$clock=GUICtrlCreateLabel("当前时间" & @hour & ":" & @min & ":" & @sec,215,17,200,20)
GUICtrlSetFont(-1, 10)
GUICtrlSetColor(-1, 0xff0000)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState()
$text=GUICtrlCreateLabel("温馨提醒您:贵重财物请自行保管好,手机请勿摆放到桌面", 30, 250, 400, 15)
GuiCtrlSetFont($text, 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0x000000)
$text1=GUICtrlCreateLabel("QQ2008", 110, 110, 80, 15)
GuiCtrlSetFont($text1, 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1=GUICtrlCreateLabel("珊瑚QQ", 250, 110, 80, 15)
GuiCtrlSetFont($text1, 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1=GUICtrlCreateLabel("游戏1", 394, 110, 80, 15)
GuiCtrlSetFont($text1, 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1=GUICtrlCreateLabel("游戏1", 79, 216, 80, 15)
GuiCtrlSetFont($text1, 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1=GUICtrlCreateLabel("游戏1", 219, 216, 80, 15)
GuiCtrlSetFont($text1, 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1=GUICtrlCreateLabel("游戏1", 359, 216, 80, 15)
GuiCtrlSetFont($text1, 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE or $msg = $goButton
ExitLoop
Case $msg = $goButton1
ExitLoop
Case $msg = $goButton2
ExitLoop
While 1
Sleep(200)
GuiCtrlSetData($clock, @hour & ":" & @min & ":" & @sec)
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
Sleep(300)
WEnd
EndSelect
WEnd
GUIDelete($controlGui)
;淡出背景颜色
for $i = 255 to 0 step -10
SetBitMap($GUI, $hImage, $i)
next
; 释放资源
_API_DeleteObject($hImage)
_GDIP_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= _API_GetDC(0)
$hMemDC= _API_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIP_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _API_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIP_ImageGetWidth ($hImage))
DllStructSetData($tSize, "Y", _GDIP_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend= DllStructCreate($tagBLENDFUNCTION)
$pBlend= DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha" , $iOpacity )
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_API_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_API_ReleaseDC (0, $hScrDC)
_API_SelectObject($hMemDC, $hOld)
_API_DeleteObject($hBitmap)
_API_DeleteDC ($hMemDC)
EndFunc
Func _ShellExecute($sCmd, $sArg="", $sFolder = "", $rState = @SW_SHOWNORMAL)
$aRet = DllCall("shell32.dll", "long", "ShellExecute", _
"hwnd", 0, _
"string", "", _
"string", $sCmd, _
"string", $sArg, _
"string", $sFolder, _
"int", $rState)
If @error Then Return 0
$RetVal = $aRet
If $RetVal > 32 Then
Return 1
else
Return 0
EndIf
EndFunc
[ 本帖最后由 yuko4632 于 2008-6-30 12:16 编辑 ] 改成下面之后时钟能运行
[ 本帖最后由 yuko4632 于 2008-6-26 21:12 编辑 ] 我帮你顶一下
回家看看去 菜单很漂亮哦 为什么不用新版?还要用A3L?A3L函数一早已经集成到新版了的。 新版就新版..我换..我换..:face (30): :face (30): :face (30): 首先SORRY一下,我并没有认真看此帖问的什么问题,只简单把PNG有关的透明用法发一下
#include <WindowsConstants.au3>
#include <GuiConstants.au3>
#include <GuiEdit.au3>
#include <IE.au3>
#include <GDIPlus.au3>
#NoTrayIcon;脚本开始执行时不显示托盘的图标
Opt("GUIOnEventMode", 1); 切换为 OnEvent 模式
$spimg = @TempDir & "lmp-splash.png"
FileInstall("splash.png", $spimg, 1)
Global Const $AC_SRC_ALPHA = 1
_GDIPlus_Startup()
$pngSrc = $spimg
$hImage = _GDIPlus_ImageLoadFromFile($pngSrc)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
$Splash = GUICreate("L|M|TER Media Player", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED, $DS_MODALFRAME)
GUISetState(@SW_LOCK)
SetBitmap($Splash, $hImage, 0)
GUISetState()
WinSetOnTop($Splash, "", 1)
For $i = 0 To 255 Step 20
SetBitmap($Splash, $hImage, $i)
Sleep(5)
Next
Sleep(1000)
;这里放些耗时的初始化操作
For $i = 255 To 0 Step -10
SetBitmap($Splash, $hImage, $i)
Sleep(10)
Next
GUIDelete($Splash)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
;_ReduceMemory(@AutoItPID)
;这里是你的主循环脚本
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 ;==>SetBitmap
最近忙着整理系统.....没发贴出来..楼上的很OK哦...:face (33):
我很奇怪...刚才竟来的时候看到一个骂人贴说到PNG图片应用问题..我也奇怪..论坛开了这么就怎么就没这类相关应用的贴子呢?我发的代码还是官方论坛找到的..对于像我这类对E问不通的人真的很吃力啊.....
在此希望大大们对发发贴....
:face (39): :face (39): :face (39): 以前记得有的,只是论坛“河蟹”了之后,很多东西都没有了。。。
找不到就骂人的,这里绝对不欢迎这样的人! 既然论坛原来有..现在应该有些大大手上有以前的源码.....不知道谁能拿点出来共享下..做做参考呢?
至于为什么用旧版的AU3..还是不新版的源码少啊!..都是到官网里找半天才找到....不大懂E文的人真的好难啊...不提供源码也没关系..对于有些提出来的问题帮忙解决下...或给点提示总是好的...要是自己一个人在那瞎猫捉耗子...什么时候才能够晋级,不做新手啊!....不是吗?...
有时候一些人提出来的问题..有些人总觉的不屑一顾...?为什么呢?...那个人可以一学就会的?..真的只是靠帮助文档就可以晋级做高手了吗?
:face (37): :face (37): :face (37): 不是不肖一顾。。。当心比人。当别人问你一个问题的时候,你完全可以很热忱的帮助他。
当第二次又是问同一问题的时候,你可能稍微有点烦躁的回答了他,但是第三次又是同样的问题的时候,你有时间有心情的时候可以帮助他,但是,当永远无忧止的同样问题让你来解答,你还有可能回答帮助他吗?同样,解答不是版主管理员的义务,大家都是爱好才泡在这个论坛,也可以说是一种缘份,但是不能将这种缘份当作是必须为某些人服务的义务。你看下FAQ就知道了,有些问题,我是拒绝回答的,连搜索都不会的人,有什么学习的理由,大家都好好反省一下吧。也许我的语气有点过份,但事实如此,有时间的可以翻下提问区,有多少问题是已经解决了的。 呵呵!是哦...这样的人还真的不少哦...我有问题一般想搜索论坛..论坛没.我再用搜索引擎搜索..最后真的没找到相关的东西..只好发贴求助了....
不过说真的...关于PNG图片应用的还真的很少...新版应用我在官方就找到一个贴...旧版的还挺多的...
居士...多张PNG图片该怎样使用呢?用循环吗?见过官方有一贴也是多张图片使用求助的贴子...我用金山快译看贴..翻译的不是很好..看的我头晕晕的... 抗上我的金山...过官网去....
:face (34): :face (34): :face (3):怎么透明法 :face (14): 看不懂
页:
[1]
2