Что нового

Элементы GUI Изменить фон под BITMAP кнопкой

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
76
Репутация
-1
Написал такой
Код:
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=D:\AutoIt\Portable\My Scripts\Графика для скриптов\LanConnect.ico
#AutoIt3Wrapper_Outfile=D:\ShareDisks Human.exe
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_SaveSource=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <WindowsConstants.au3>

If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

$Host = 'ROBOT'

DirCreate(@TempDir & '\ShareDisksRes')

FileInstall('D:\RMTShare.exe', @TempDir & '\ShareDisksRes\RMTShare.exe', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_C.bmp', @TempDir & '\ShareDisksRes\Open_C.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_D.bmp', @TempDir & '\ShareDisksRes\Open_D.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_E.bmp', @TempDir & '\ShareDisksRes\Open_E.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_F.bmp', @TempDir & '\ShareDisksRes\Open_F.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_C_RW.bmp', @TempDir & '\ShareDisksRes\Open_C_RW.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_D_RW.bmp', @TempDir & '\ShareDisksRes\Open_D_RW.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_E_RW.bmp', @TempDir & '\ShareDisksRes\Open_E_RW.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Open_F_RW.bmp', @TempDir & '\ShareDisksRes\Open_F_RW.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Close_C.bmp', @TempDir & '\ShareDisksRes\Close_C.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Close_D.bmp', @TempDir & '\ShareDisksRes\Close_D.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Close_E.bmp', @TempDir & '\ShareDisksRes\Close_E.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Close_F.bmp', @TempDir & '\ShareDisksRes\Close_F.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Delete_C.bmp', @TempDir & '\ShareDisksRes\Delete_C.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Delete_D.bmp', @TempDir & '\ShareDisksRes\Delete_D.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Delete_E.bmp', @TempDir & '\ShareDisksRes\Delete_E.bmp', 1)
FileInstall('D:\AutoIt\Portable\My Scripts\Графика для скриптов\Delete_F.bmp', @TempDir & '\ShareDisksRes\Delete_F.bmp', 1)


$MainWindow = GUICreate('ShareDisks', 280, 405, -1, -1)
$Open_C = GUICtrlCreateButton('', 10, 10, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить C: для чтения")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_C.bmp', -1)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetBkColor(-1, 0x333333)
$Open_D = GUICtrlCreateButton('', 80, 10, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить D: для чтения")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_D.bmp', -1)
    GUICtrlSetCursor(-1, 0)
$Open_E = GUICtrlCreateButton("", 150, 10, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить E: для чтения")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_E.bmp', -1)
$Open_F = GUICtrlCreateButton("", 220, 10, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить F: для чтения")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_F.bmp', -1)
$Open_C_RW = GUICtrlCreateButton('', 10, 70, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить C: для записи")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_C_RW.bmp', -1)
    GUICtrlSetCursor(-1, 0)
$Open_D_RW = GUICtrlCreateButton('', 80, 70, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить D: для записи")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_D_RW.bmp', -1)
    GUICtrlSetCursor(-1, 0)
$Open_E_RW = GUICtrlCreateButton("", 150, 70, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить E: для записи")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_E_RW.bmp', -1)
$Open_F_RW = GUICtrlCreateButton("", 220, 70, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Расшарить F: для записи")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Open_F_RW.bmp', -1)
$Close_C = GUICtrlCreateButton('', 10, 130, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Закрыть C:")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Close_C.bmp', -1)
    GUICtrlSetCursor(-1, 0)
$Close_D = GUICtrlCreateButton('', 80, 130, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Закрыть D:")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Close_D.bmp', -1)
    GUICtrlSetCursor(-1, 0)
$Close_E = GUICtrlCreateButton("", 150, 130, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Закрыть E:")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Close_E.bmp', -1)
$Close_F = GUICtrlCreateButton("", 220, 130, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Закрыть F:")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Close_F.bmp', -1)
$Delete_C = GUICtrlCreateButton('', 10, 185, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Удалить C:")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Delete_C.bmp', -1)
    GUICtrlSetCursor(-1, 0)
$Delete_D = GUICtrlCreateButton('', 80, 185, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Удалить D:")
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Delete_D.bmp', -1)
    GUICtrlSetCursor(-1, 0)
$Delete_E = GUICtrlCreateButton("", 150, 185, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Удалить E:")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Delete_E.bmp', -1)
$Delete_F = GUICtrlCreateButton("", 220, 185, 50, 50, $BS_BITMAP)
    GUICtrlSetTip(-1, "Удалить F:")
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetImage(-1, @TempDir & '\ShareDisksRes\Delete_F.bmp', -1)
$Close_ALL = GUICtrlCreateButton("Закрыть ВСЕ!", 10, 245, 260, 25)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetBkColor(-1, 0x333333)
    GUICtrlSetColor(-1, 0xDA9348)
$Delete_ALL = GUICtrlCreateButton("Удалить ВСЕ!", 10, 275, 260, 25)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetBkColor(-1, 0x333333)
    GUICtrlSetColor(-1, 0xfd6347)
$Share_ALL_READ= GUICtrlCreateButton("Расшарить ВСЕ! [READ]", 10, 305, 260, 25)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetBkColor(-1, 0x333333)
    GUICtrlSetColor(-1, 0x9acd32)
$Share_ALL_WRITE = GUICtrlCreateButton("Расшарить ВСЕ! [WRITE]", 10, 335, 260, 25)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetBkColor(-1, 0x333333)
    GUICtrlSetColor(-1, 0x6991FF)
$Exit= GUICtrlCreateButton('Выход', 10, 365, 260, 25)
    GUICtrlSetCursor(-1, 0)
    GUICtrlSetBkColor(-1, 0x333333)
    GUICtrlSetColor(-1, 0xaaaaaa)

WinSetOnTop($MainWindow, '', 1)
GUISetIcon('D:\AutoIt\Portable\My Scripts\Графика для скриптов\LanConnect.ico')
GUISetBkColor(0x555555)
GUISetState(@SW_Show)
HotKeySet('{ESC}', 'Exit_to_ESC')


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            DirRemove(@TempDir & '\ShareDisksRes', 1)
            Exit

        Case $Open_C
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Windows /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Windows=C:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)
        Case $Open_D
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Data /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Data=D:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)
        Case $Open_E
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share "Data [HGST]" /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\"Data [HGST]"=E:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)
        Case $Open_F
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Toshiba /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Toshiba=F:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)

        Case $Open_C_RW
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Windows /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Windows=C:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)
        Case $Open_D_RW
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Data /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Data=D:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)
        Case $Open_E_RW
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share "Data [HGST]" /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\"Data [HGST]"=E:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)
        Case $Open_F_RW
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Toshiba /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Toshiba=F:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)

        Case $Close_C
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Windows /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Windows=C:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)
        Case $Close_D
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Data /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Data=D:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)
        Case $Close_E
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share "Data [HGST]" /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\"Data [HGST]"=E:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)
        Case $Close_F
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Toshiba /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Toshiba=F:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)

        Case $Delete_C
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Windows /Delete /yes', '', '', @SW_HIDE)
        Case $Delete_D
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Data /Delete /yes', '', '', @SW_HIDE)
        Case $Delete_E
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share "Data [HGST]" /Delete /yes', '', '', @SW_HIDE)
        Case $Delete_F
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Toshiba /Delete /yes', '', '', @SW_HIDE)

        Case $Close_ALL
            Run(@ComSpec & ' /C openfiles /disconnect /id *', '', '', @SW_HIDE)
            Sleep(200)
            Run(@ComSpec & ' /C net share Windows /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Windows=C:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C net share Data /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Data=D:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C net share "Data [HGST]" /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\"Data [HGST]"=E:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C net share Toshiba /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Toshiba=F:\ /USERS:1 /GRANT Все:', '', '', @SW_HIDE)
        Case $Delete_ALL
            Run(@ComSpec & ' /C openfiles /disconnect /id *', '', '', @SW_HIDE)
            Sleep(200)
            Run(@ComSpec & ' /C net share Windows /Delete /yes', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C net share Data /Delete /yes', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C net share "Data [HGST]" /Delete /yes', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C net share Toshiba /Delete /yes', '', '', @SW_HIDE)
        Case $Share_ALL_READ
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Windows /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Windows=C:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Data /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Data=D:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share "Data [HGST]" /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\"Data [HGST]"=E:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Toshiba /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Toshiba=F:\ /USERS:3 /GRANT Все:R', '', '', @SW_HIDE)
        Case $Share_ALL_WRITE
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Windows /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Windows=C:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Data /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Data=D:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share "Data [HGST]" /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\"Data [HGST]"=E:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)
            Run(@ComSpec & ' /C openfiles /disconnect /id * & net share Toshiba /Delete /yes & ' & @TempDir & '\ShareDisksRes\RMTShare.exe \\' & $Host & '\Toshiba=F:\ /USERS:3 /GRANT Все:F', '', '', @SW_HIDE)
        Case $Exit
            DirRemove(@TempDir & '\ShareDisksRes', 1)
            ExitLoop
    EndSwitch
WEnd

Func Exit_to_ESC()
    DirRemove(@TempDir & '\ShareDisksRes', 1)
    Exit
EndFunc
Если устанавливаю GUICtrlSetBkColor, то этот цвет перекрывает изображение. Если без этого параметра, то фон светлый (наверное белый)
Как сделать свой фон и чтобы изображение не перекрывалось?

JmMPQ5P.jpg
 
Автор
BlagoYar

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
76
Репутация
-1
А если просто фон в на картинке поменять?
Ну это понятно, но хотелось бы легко его менять, если например хочу сделать тёмную и светлую тему окна, то придётся перерисовывать.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Делайте два объекта. Один фоновый, другой png с прозрачным фоном. Один кликабельный, фоновый объект - нет
 

Norm

Продвинутый
Сообщения
289
Репутация
75
если например хочу сделать тёмную и светлую тему окна
Самый простой способ (c использованием нконки).
Всё остальное (при наличии опыта) потребует затрат по времени, значительного увеличения размера кода (включая доп. библиотеки).
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Example1()

Func Example1()
;    Opt("GUIOnEventMode", 1)  ; Включает режим OnEvent
    $mainwindow = GUICreate("Иконки в GUI", 250, 100)
    GUISetBkColor(0xFFF0AD)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
    $iCon = GUICtrlCreateIcon("shell32.dll", 10, 20, 20)
;    GUICtrlSetOnEvent(-1, "Button_1")
    GUICtrlCreateLabel("",16, 16, 40, 40, $SS_GRAYFRAME)
    GUISetState(@SW_SHOW)
    While 1
;        Sleep 1000
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                CLOSEClicked()
            Case $iCon
                Button_1()
        EndSwitch
    WEnd
EndFunc   ;==>Example1

Func Button_1()
    MsgBox(0, "Событие GUI", "Вы нажали Icon!")
EndFunc

Func CLOSEClicked()
  Exit
EndFunc
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
575
Репутация
68
Видимо неправильно конвертировали. Нужно было приложить картинки без которых это не очевидно.
 

Вложения

  • img.zip
    1.6 КБ · Просмотры: 3
Автор
BlagoYar

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
76
Репутация
-1
Видимо неправильно конвертировали. Нужно было приложить картинки без которых это не очевидно.
Та не, уже не первый год имею дело.
Да и не суть, потому что картинка здесь не при чём, потому что она 42х42, а размер кнопки 50х50. Почему так, потому что закруглённые углы и если сделать кнопку 42, то вообще убого смотрится, а так сносно ещё.
 

Prog

Продвинутый
Сообщения
575
Репутация
68
Вложение в моем предыдущем сообщении посмотрите. Картинка нормально отображается?
 
Автор
BlagoYar

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
76
Репутация
-1

Вложения

  • Графика для скриптов.zip
    15.9 КБ · Просмотры: 3

Norm

Продвинутый
Сообщения
289
Репутация
75

Вложения

  • GuiFlatButton_Test.zip
    11.2 КБ · Просмотры: 3
Автор
BlagoYar

BlagoYar

Русь Великая, Очнись! Поднимись с колен Родная!
Сообщения
76
Репутация
-1
Верх