Общий раздел по AutoIt > GUI - Графический интерфейс пользователя

Управление PNG изображением с прозрачными участками

(1/1)

Yuriy_V.:
Добрый день.

Пересмотрел кучу тем в форуме, но так и не могу решить задачу.
Есть окно в котором фон JPG изображение и две кнопки. Нужно, что бы при нажатии на "кнопку 1" появлялось в окне на фоне изображение PNG (в этом изображении есть прозрачные участки), а при нажатии на "кнопку 2" PNG изображение исчезало, а фон оставался.

Пока что пробовал просто наложить два изображения, но естественно PNG картинка накладывается на белом фоне.

Код: AutoIt $Fon = GUICreate("", 1920, 1080,-1,-1)
$Pic = GUICtrlCreatePic("", 0, 0, 1920, 1080)
_SetImage($Pic, "Путь к файлу фона")
GUISetState(@SW_SHOW, $Fon)
Sleep(1000)
$Icon = GUICreate("Icon", 1169, 1080,-1,-1, $WS_POPUP, 0, $Fon)
$Pic2 = GUICtrlCreatePic("Icon", 0, 0, 1169, 1080)
_SetImage($Pic2, "Путь к файлу PNG")
GUISetState(@SW_SHOW, $Icon)
Sleep(2000)
 

А нужно так как на риснуке.

Заранее благодарен за любую помощь.

InnI:
Картинки приложены Код: AutoIt #include <GDIPlus.au3>
#include <WinAPISys.au3>
#include <GuiConstants.au3>

$JpgPath = @ScriptDir & "\fon.jpg"
$PngPath = @ScriptDir & "\ico.png"

$Fon = GUICreate("")
$Pic = GUICtrlCreatePic($JpgPath, 0, 0, 400, 400)
GUICtrlSetState(-1, $GUI_DISABLE)
$BtnShow = GUICtrlCreateButton("Показать", 10, 370)
$BtnHide = GUICtrlCreateButton("Скрыть", 340, 370)
GUISetState(@SW_SHOW, $Fon)

_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($PngPath)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

$Icon = GUICreate("", 200, 200, -1, -1, $WS_POPUP, $WS_EX_LAYERED, $Fon)
GUISetState(@SW_SHOW, $Icon)
_WinAPI_UpdateLayeredWindowEx($Icon, -1, -1, $hBitmap, 255, True)

Do
  Switch GUIGetMsg()
    Case -3
      Exit
    Case $BtnShow
      WinSetState($Icon, "", @SW_SHOW)
    Case $BtnHide
      WinSetState($Icon, "", @SW_HIDE)
  EndSwitch
Until 0

Навигация

[0] Главная страница сообщений

Перейти к полной версии