Что нового

Заливка окна текстурой

yl3d

Новичок
Сообщения
70
Репутация
0
Здравствуйте.
У меня есть скрипт закрашивающий окно в определенный цвет и растягивающий его во весь экран.
Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
GUICreate("Пример", 400, 400, -1, -1, BitOR($WS_MAXIMIZE, $WS_POPUP))
GUISetBkColor(0xFFD700)
GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Как скриптом закрасить это окно не в однотонный цвет, а залить повторяющейся текстурой ?
Адрес файла этой текстуры F:\заливка 1\1.jpg
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Если знакомы с GDI+, то см. пример в справке по функции
Код:
_GDIPlus_TextureCreate()


В противном случае замостите элементами
Код:
GUICtrlCreatePic()
Но здесь можно упереться в ограничения AutoIt, если картинка маленькая (максимальное количество элементов GUI 65532).
 
Автор
Y

yl3d

Новичок
Сообщения
70
Репутация
0
InnI, получился вот такой скрипт:

Код:
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <MsgboxConstants.au3>

Example()

Func Example()
    ; X64 running support
    Local $sWow64 = ""
    If @AutoItX64 Then $sWow64 = "\Wow6432Node"

    ;get AutoIt install dir
    Local $sRegPath = "HKLM\SOFTWARE" & $sWow64 & "\AutoIt v3\AutoIt"

    Local $sFile = "G:\ЗАПРОСЫ-3\1082-Закраска псилиды - текстурой.exe\эксперимент-!!!!\1.jpg"
    If Not FileExists($sFile) Then
        MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", $sFile & " not found!", 30)
        Return False
    EndIf

    _GDIPlus_Startup()
    Local $hImage = _GDIPlus_ImageLoadFromFile($sFile) ;create an image object based on a file
    If @error Then
        _GDIPlus_Shutdown()
        MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "An error has occured - unable to load image!", 30)
        Return False
    EndIf

    Local $hGUI = GUICreate("GDI+ Example (" & @ScriptName & ")", 4000, 4000,-1,-1)
    GUISetState()

    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;create a Graphics object from a window handle
    _GDIPlus_GraphicsClear($hGraphics, 0xFF404040) ;clear graphic handle with dark grey (background)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphics, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;sets the graphics object rendering quality (antialiasing)
    Local $hTexture = _GDIPlus_TextureCreate($hImage)
    _GDIPlus_GraphicsFillRect($hGraphics, 10, 40, 4000, 4000, $hTexture) ;draw ellipse with texture as a brush

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ;cleanup resources
    _GDIPlus_BrushDispose($hTexture)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    GUIDelete($hGUI)
EndFunc   ;==>Example

Как добавить в строчку создания окна (GUICreate) - параметры BitOR($WS_MAXIMIZE, $WS_POPUP) ?
Почему-то не могу добавить - выдает ошибку.
 
Верх