找回密码
 加入
搜索
查看: 6050|回复: 18

PNG透明效果..未完成!算了结贴了!!!

  [复制链接]
发表于 2008-6-26 14:06:47 | 显示全部楼层 |阅读模式
来论坛之后,人生第一贴,请大大们多帮忙......最小化.时钟...不对...想用INI文件来配置发现没作用!
#NoTrayIcon
#include <A3LGDIPlus.au3> 
; $i = "confing.ini"
; $A1 = IniRead($i, "基本配置", "菜单标题", "")
; $A2 = IniRead($i, "基本配置", "公告", "")
; $B[6] = IniRead($i, "菜单设置", "菜单名称"&[6], "")
; $C[6]= IniRead($i, "菜单设置", "菜单说明"&[6], "")
; $png[6] =IniRead($i, "菜单设置", "图片路径"&[6], "")
; $run[6] =IniRead($i, "菜单设置", "执行文件"&[6], "")
Opt("MustDeclareVars", 0)
Global Const $AC_SRC_ALPHA      = 1
Global Const $ULW_ALPHA         = 2
Global $old_string = "", $runthis = ""
Global $launchDir = @DesktopDir
Local $controlGui[9], $text1[6]
_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[0] = 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[0]=GUICtrlCreateLabel("QQ2008", 110, 110, 80, 15)
GuiCtrlSetFont($text1[0], 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1[1]=GUICtrlCreateLabel("珊瑚QQ", 250, 110, 80, 15)
GuiCtrlSetFont($text1[1], 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1[2]=GUICtrlCreateLabel("游戏1", 394, 110, 80, 15)
GuiCtrlSetFont($text1[2], 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1[3]=GUICtrlCreateLabel("游戏1", 79, 216, 80, 15)
GuiCtrlSetFont($text1[3], 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1[4]=GUICtrlCreateLabel("游戏1", 219, 216, 80, 15)
GuiCtrlSetFont($text1[5], 10)
GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1,0xFFFFFF)
$text1[5]=GUICtrlCreateLabel("游戏1", 359, 216, 80, 15)
GuiCtrlSetFont($text1[5], 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[0])
;淡出背景颜色
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[0]
   If $RetVal > 32 Then
    Return 1
   else  
 Return 0
   EndIf
EndFunc


[ 本帖最后由 yuko4632 于 2008-6-30 12:16 编辑 ]

本帖子中包含更多资源

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

×

评分

参与人数 2金钱 +1 贡献 +5 收起 理由
lynfr8 + 5 精品文章
rho123 + 1 不错

查看全部评分

 楼主| 发表于 2008-6-26 14:22:41 | 显示全部楼层
改成下面之后时钟能运行

[ 本帖最后由 yuko4632 于 2008-6-26 21:12 编辑 ]
发表于 2008-6-26 14:28:25 | 显示全部楼层
我帮你顶一下

回家看看去
发表于 2008-6-27 11:04:00 | 显示全部楼层
菜单很漂亮哦
发表于 2008-6-27 11:06:32 | 显示全部楼层
为什么不用新版?还要用A3L?A3L函数一早已经集成到新版了的。
 楼主| 发表于 2008-6-27 13:56:40 | 显示全部楼层
新版就新版..我换..我换..
发表于 2008-6-27 16:45:01 | 显示全部楼层
首先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
 楼主| 发表于 2008-6-28 22:16:08 | 显示全部楼层
最近忙着整理系统.....没发贴出来..楼上的很OK哦...

我很奇怪...刚才竟来的时候看到一个骂人贴说到PNG图片应用问题..我也奇怪..论坛开了这么就怎么就没这类相关应用的贴子呢?我发的代码还是官方论坛找到的..对于像我这类对E问不通的人真的很吃力啊.....
在此希望大大们对发发贴....

发表于 2008-6-28 22:37:01 | 显示全部楼层
以前记得有的,只是论坛“河蟹”了之后,很多东西都没有了。。。

找不到就骂人的,这里绝对不欢迎这样的人!
 楼主| 发表于 2008-6-29 02:02:50 | 显示全部楼层
既然论坛原来有..现在应该有些大大手上有以前的源码.....不知道谁能拿点出来共享下..做做参考呢?
      至于为什么用旧版的AU3..还是不新版的源码少啊!..都是到官网里找半天才找到....不大懂E文的人真的好难啊...不提供源码也没关系..对于有些提出来的问题帮忙解决下...或给点提示总是好的...要是自己一个人在那瞎猫捉耗子...什么时候才能够晋级,不做新手啊!....不是吗?...
       有时候一些人提出来的问题..有些人总觉的不屑一顾...?为什么呢?...那个人可以一学就会的?..真的只是靠帮助文档就可以晋级做高手了吗?

发表于 2008-6-29 02:11:14 | 显示全部楼层
不是不肖一顾。。。当心比人。当别人问你一个问题的时候,你完全可以很热忱的帮助他。
当第二次又是问同一问题的时候,你可能稍微有点烦躁的回答了他,但是第三次又是同样的问题的时候,你有时间有心情的时候可以帮助他,但是,当永远无忧止的同样问题让你来解答,你还有可能回答帮助他吗?同样,解答不是版主管理员的义务,大家都是爱好才泡在这个论坛,也可以说是一种缘份,但是不能将这种缘份当作是必须为某些人服务的义务。你看下FAQ就知道了,有些问题,我是拒绝回答的,连搜索都不会的人,有什么学习的理由,大家都好好反省一下吧。也许我的语气有点过份,但事实如此,有时间的可以翻下提问区,有多少问题是已经解决了的。
 楼主| 发表于 2008-6-29 02:36:59 | 显示全部楼层
呵呵!是哦...这样的人还真的不少哦...我有问题一般想搜索论坛..论坛没.我再用搜索引擎搜索..最后真的没找到相关的东西..只好发贴求助了....

不过说真的...关于PNG图片应用的还真的很少...新版应用我在官方就找到一个贴...旧版的还挺多的...

居士...多张PNG图片该怎样使用呢?用循环吗?见过官方有一贴也是多张图片使用求助的贴子...我用金山快译看贴..翻译的不是很好..看的我头晕晕的...
 楼主| 发表于 2008-6-29 02:55:43 | 显示全部楼层
抗上我的金山...过官网去....

发表于 2008-12-3 20:46:19 | 显示全部楼层
怎么透明法
发表于 2009-2-9 04:59:32 | 显示全部楼层
看不懂
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-29 05:32 , Processed in 0.136180 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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