Картинки в окне, переключатель.

Ответить
Аватара пользователя
semiono

Картинки в окне, переключатель.

Сообщение semiono »

Нужно зделать окно 300x500 пикселей примерно, на окне разместить ComboBox() и пару квадратиков bmp, хотя лучше png.

Вообщем чтоб квадратики менять местами, левый на правый итп. через ComboBox[здесь некое название]

Я предпологаю далее зделать большее число квадратов на окне, заранее говорю чтоб было можно программу усложнить.

Ну вроде шахматных фигур нечто такое...

А конкретно это справочник гитарных аккордов будет... шесть на восемь картинок...

Мне только заготовка нужна для начала.



А вот картинки потом я надеюсь можно вкампилировать в exe? Хотелось бы одним файлом это зделать.



Из хелпа не ясно лишь как привязать "смену событий" к GUICtrlCreateCombo

Как мне через GUICtrlSetData() менять картинки (X Y)



Вот пока контрол нарисовал только...





Код:

Код: Выделить всё

#include 
GUICreate('Chords',200,300)
GUICtrlCreateCombo('item1',10,10,180)
GUICtrlSetData(-1,'item2|item3','item3')
GUISetState()
While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd

Как мне получить результат нажатия GUICtrlSetData ?
Аватара пользователя
madmasles

Re: Картинки в окне, переключатель.

Сообщение madmasles »

Цитата semiono:



не ясно лишь как привязать "смену событий" к GUICtrlCreateCombo
Картинки в окне, переключатель.






Код:

Код: Выделить всё

#include 
$sDefault = 'item2'
$hGui = GUICreate('Chords', 200, 300)
$hCombo = GUICtrlCreateCombo('', 10, 30, 180)
GUICtrlSetData(-1, 'item1|item2|item3|item4|item5|item6', $sDefault)
$hLabel = GUICtrlCreateLabel($sDefault, 10, 5, 180)
GUISetState()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hCombo
            GUICtrlSetData($hLabel, GUICtrlRead($hCombo))
    EndSwitch
WEnd


Цитата semiono:



хотя лучше png
Картинки в окне, переключатель.




По поводу картинок:
Поддержка иконок и изображений, содержащих прозрачность (Alpha канал)
. Смотрите пример № 6.



Чтобы картинки записать в ресурсы exe-шника:
FAQ по использованию ресурсов в AutoIt
Аватара пользователя
semiono

Re: Картинки в окне, переключатель.

Сообщение semiono »

madmasles, может сразу напишешь пример, два квадрата BMP и местами (x, y) их поменять (GUICtrlSetData item1 item2)

ато я While/If/Than буду долго думать, я логически плохо умею мыслить. )
Аватара пользователя
madmasles

Re: Картинки в окне, переключатель.

Сообщение madmasles »

semiono,

Попробуйте так:
читать дальше »




Код:

Код: Выделить всё

#include 
#include 
#include 
Global Const $sRed = @ScriptDir & '\red.png'
Global Const $sGreen = @ScriptDir & '\green.png'
Global Const $sBlue = @ScriptDir & '\blue.png'
Global Const $sYellow = @ScriptDir & '\yellow.png'
$sDefault = 'Красный'
$hRed = _Icons_Bitmap_Load($sRed)
$hGreen = _Icons_Bitmap_Load($sGreen)
$hBlue = _Icons_Bitmap_Load($sBlue)
$hYellow = _Icons_Bitmap_Load($sYellow)
$hGui = GUICreate('Chords', 300, 340)
$hCombo = GUICtrlCreateCombo('', 10, 30, 280)
GUICtrlSetData(-1, 'Синий|Зеленый|Красный|Желтый', $sDefault)
$hLabel = GUICtrlCreateLabel('По умолчанию: ' & $sDefault, 10, 5, 280, 16, $SS_CENTER)
$hPic = GUICtrlCreatePic('', 22, 70, 256, 256)
_SetHImage($hPic, $hRed)
GUISetState()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hCombo
            $sFromCombo = GUICtrlRead($hCombo)
            GUICtrlSetData($hLabel, 'Вы выбрали: ' & $sFromCombo)
            Switch $sFromCombo
                Case 'Красный'
                    _SetHImage($hPic, $hRed)
                Case 'Зеленый'
                    _SetHImage($hPic, $hGreen)
                Case 'Синий'
                    _SetHImage($hPic, $hBlue)
                Case 'Желтый'
                    _SetHImage($hPic, $hYellow)
            EndSwitch
    EndSwitch
WEnd





Ссылка на библиотеку Icons.au3[/i] в моем предыдущем посту. Не забудьте про нее. Картинки в прикрепленном архиве.
Аватара пользователя
semiono

Re: Картинки в окне, переключатель.

Сообщение semiono »

Красиво! Изображение

---

Чтоб я вообще сам не думал, а где подправить, чтоб две картинки были одновременно рядом?



ИзображениеИзображение



или вот ещё пример:



Изображение



Впрочем попробую самостоятельно испортить Ваш код... ))
Аватара пользователя
madmasles

Re: Картинки в окне, переключатель.

Сообщение madmasles »

Цитата semiono:



чтоб две картинки были одновременно рядом
Картинки в окне, переключатель.




Вот Вам пример с 4-мя картинками рядом:
читать дальше »




Код:

Код: Выделить всё

#include 
#include 
#include 
Dim $aPic[10] = [@ScriptDir & '\0.png', @ScriptDir & '\1.png', @ScriptDir & '\2.png', _
        @ScriptDir & '\3.png', @ScriptDir & '\4.png', @ScriptDir & '\5.png', _
        @ScriptDir & '\6.png', @ScriptDir & '\7.png', @ScriptDir & '\8.png', _
        @ScriptDir & '\9.png']
Dim $aPicControl[5] = [4]
$hGui = GUICreate('Счетчик', 250, 250, -1, -1)
$hInput = GUICtrlCreateInput('', 100, 10, 50, 18, BitOR($ES_NUMBER, $ES_CENTER, $ES_READONLY))
GUICtrlSetLimit(-1, 4)
For $i = 1 To $aPicControl[0]
    $aPicControl[$i] = GUICtrlCreatePic('', 77 + ($i - 1) * 24, 50, 24, 28)
    GUICtrlSetState(-1, $GUI_DISABLE)
    _SetImage($aPicControl[$i], $aPic[0])
Next
$hButton = GUICtrlCreateButton('Вперед', 100, 150, 50, 22)
GUISetState()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hButton
            GUICtrlSetState($hButton, $GUI_DISABLE)
            GUICtrlSetData($hInput, Random(1000, 9999, 1))
            _Set_Number(GUICtrlRead($hInput))
            GUICtrlSetState($hButton, $GUI_ENABLE)
    EndSwitch
WEnd
Func _Set_Number($n)
    Local $aNumber
    For $i = 1 To 4
        _SetImage($aPicControl[$i], $aPic[0])
    Next
    Sleep(100)
    $n = StringFormat('%04d', $n)
    $aNumber = StringSplit($n, '')
    For $i = 1 To $aPicControl[0]
        For $j = 0 To $aNumber[$i]
            _SetImage($aPicControl[$i], $aPic[$j])
            Sleep(150)
        Next
    Next
EndFunc   ;==>_Set_Number
Аватара пользователя
semiono

Re: Картинки в окне, переключатель.

Сообщение semiono »

Я уже сам немного продвинулся в этом ))



Код:

Код: Выделить всё

$hPic1 = GUICtrlCreatePic('', 22, 70, 256, 256)
$hPic2 = GUICtrlCreatePic('', 220, 70, 256, 256)
_SetHImage($hPic1, $hRed)
_SetHImage($hPic2, $hGreen)
...
                Case '1'
                    _SetHImage($hPic1, $hRed)
                    _SetHImage($hPic2, $hGreen)
                Case '2'
                    _SetHImage($hPic1, $hGreen)
                    _SetHImage($hPic2, $hRed)
                Case '3'
                    _SetHImage($hPic1, $hBlue)
                    _SetHImage($hPic2, $hYellow)
                Case '4'
                    _SetHImage($hPic1, $hYellow)
                    _SetHImage($hPic2, $hRed)

Когда у меня будет таблица 6x8 картинок, я уже представил как там запутаться можно! )))



madmasles, однако Вы усложняете! Пример замечательный, хотя мне в нём всё менее понятно стало )))

Только казалось я был близок к пониманию.
Ответить

Вернуться в «AutoIt»