Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] $WS_POPUP GIF картинка с прозрачным фоном реально?

Ответить
Настройки темы
[решено] $WS_POPUP GIF картинка с прозрачным фоном реально?

Новый участник


Сообщения: 24
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем привет, вот есть вопрос: у меня GIF картинка имеющая прозрачныи фон, так этот фон когда GUI включается отображается белым цветом. Есть ли возможность сделать фон прозрачным в GUI.
Заранее спасибо

#Include <StaticConstants.au3>
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>
#include <GUIConstants.au3>


$MainGUI = GUICreate("Pinnwand",306,236,-1,-1,$WS_POPUP, $WS_EX_TOOLWINDOW)
GUICtrlCreatePic(@ScriptDir & "\lll.gif",0,0, 0,0)
$Exit = GUICtrlCreateButton("Beenden",387,337,100,25)
GUISetState(@SW_SHOW)






While 1
Sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Exit
Exit
EndSwitch
WEnd

Отправлено: 00:19, 25-06-2010

 

Новый участник


Сообщения: 36
Благодарности: 2

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include "transparency.au3"

 $temp = @ScriptDir & "\1.png"
Transp_PNG($temp)









Код: Выделить весь код
;~ -------------------------------------------------------
; Description   :
; Written by    : Alex Pougach
; Date          : 24/09/2008
;
; With help of Igal Bravshtein and Creat0R
; --------------------------------------------------------

#include-once

; Transp_PNG( $temp , x , y),$temp = "E:\VBA\AutoIt\GUI\2.png"
; $temp- Doroga k file
; x - prozrachnost
; y- Plavnost poiavleniia

#NoTrayIcon
#include <GDIPlus.au3>
#include <GuiComboBox.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WinAPI.au3>

;~ Global Const $WM_LBUTTONDOWN = 0x0201
;~ Global Const $WM_LBUTTONUP = 0x0202
;~ Global Const $ULW_ALPHA = 2

Global Const $AC_SRC_ALPHA = 1
Global $launchDir = @DesktopDir, $GUI

Global $iExitLoop = False

Func Transp_PNG($pngSrc, $iOpacity = 255, $EnableFade = True)
    Local $hImage,$width,$height,$BtnExit
;~  ConsoleWrite( $temp & @LF)
    If $iOpacity < 0 Then $iOpacity = 0
    If $iOpacity > 255 Then $iOpacity = 255

    ; Load PNG file as GDI bitmap
    _GDIPlus_Startup()
;~  $pngSrc = $temp
    $hImage = _GDIPlus_ImageLoadFromFile($pngSrc)

    ; Extract image width and height from PNG
    $width = _GDIPlus_ImageGetWidth($hImage)
    $height = _GDIPlus_ImageGetHeight($hImage)

    ; Create layered window

    $GUI = GUICreate("", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
    WinSetOnTop($GUI, "", 1)

    GUIRegisterMsg(0x0201, "WM_LBUTTONDOWN")
    GUIRegisterMsg(0x0202, "WM_LBUTTONUP")
    GUIRegisterMsg($WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED")

    GUISetState()

    If $EnableFade Then
        ;fade in png background
        For $i = 0 To $iOpacity Step 1
            SetBitmap($GUI, $hImage, $i)
        Next
    Else
        SetBitmap($GUI, $hImage, $iOpacity)
    EndIf

    ; set default button for Enter key activation - renders outside GUI window
    $BtnExit = GUICtrlCreateButton("Exit", $width, $height, 10, 10, $BS_DEFPUSHBUTTON)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $BtnExit
                ExitLoop
        EndSwitch

        If $iExitLoop Then ExitLoop
    WEnd

    If $EnableFade Then
        ;fade out png background
        For $i = $iOpacity To 0 Step -1
            SetBitmap($GUI, $hImage, $i)
        Next
    Else
        SetBitmap($GUI, $hImage, 0)
    EndIf
EndFunc   ;==>Transp_PNG

; Handle the WM_LBUTTONDOWN for the layered window so it can be dragged by clicking anywhere on the image.
Func WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    If BitAND(WinGetState($hWnd), 32) Then Return $GUI_RUNDEFMSG
    DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", $WM_SYSCOMMAND, "int", 0xF009, "int", 0)
EndFunc   ;==>WM_LBUTTONDOWN

Func WM_LBUTTONUP($hWnd, $iMsg, $wParam, $lParam)
    $iExitLoop = True
EndFunc   ;==>WM_LBUTTONUP

Func WM_WINDOWPOSCHANGED($hWnd, $iMsg, $wParam, $lParam)
    $iExitLoop = False
EndFunc   ;==>WM_WINDOWPOSCHANGED

; SetBitMap
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, 2)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
EndFunc   ;==>SetBitmap
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:23, 01-07-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] $WS_POPUP GIF картинка с прозрачным фоном реально?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Инфо - [решено] Создание собственной темы оформления, связанной с фоном экрана входа в Windows 7 Smarty Оформление Windows 11/ 10 / 8 / 7 / Vista 14 07-10-2011 07:11
Реально ли такое сделать, и если реально, то как? Pliomera Флейм 8 22-03-2010 12:24
Sony Ericsson запустила в продажу телефон с прозрачным экраном OSZone News Новости информационных технологий 0 17-12-2009 19:30
Заливка прозрачным цветом? D@n1k007 Цифровое изображение 4 24-06-2009 16:25




 
Переход