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

Показать сообщение отдельно

Аватара для AZJIO

Старожил


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

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


Vsirf, Я сделал ошибку, не передав в функцию дескриптор списка изображений, используя один список, теперь рисунки добавляются каждый в свой список изображений. И работает.

читать дальше »
Код: Выделить весь код
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiImageList.au3>

$Gui=GUICreate('пример', 300, 220, -1, -1, BitOr($WS_BORDER, $WS_POPUP, $WS_SYSMENU))
; GUICreate('пример', 300, 220)

; =====================================
$hImage1 = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_AddIcon($hImage1, "shell32.dll", 27)
_GUIImageList_AddIcon($hImage1, "shell32.dll", 112)
_GUIImageList_AddIcon($hImage1, "shell32.dll", 25)
_GUIImageList_AddIcon($hImage1, "shell32.dll", 25)
_GUIImageList_AddIcon($hImage1, "shell32.dll", 27)

$Button = GUICtrlCreateButton("", 300-27, 2, 25, 25)
_GUICtrlButton_SetImageList(-1, $hImage1, 1, 4)
; =====================================
$hImageList = _GUIImageList_Create(66, 91, 5)
_GDIPlus_Startup()
_Image($hImageList, @ScriptDir & '\Image1.png')
_Image($hImageList, @ScriptDir & '\Image2.png')
_Image($hImageList, @ScriptDir & '\Image3.png')
_Image($hImageList, @ScriptDir & '\Image1.png')
_Image($hImageList, @ScriptDir & '\Image1.png')
_GDIPlus_Shutdown()
; =====================================
$Button1 = GUICtrlCreateButton("", 10, 50, 80, 100)
_GUICtrlButton_SetImageList(-1, $hImageList, 1)

; =====================================
$hImageList1 = _GUIImageList_Create(66, 91, 5)
_GDIPlus_Startup()
_Image($hImageList1, @ScriptDir & '\Image1.png')
_Image($hImageList1, @ScriptDir & '\Image2.png')
_Image($hImageList1, @ScriptDir & '\Image3.png')
_Image($hImageList1, @ScriptDir & '\Image1.png')
_Image($hImageList1, @ScriptDir & '\Image1.png')
_GDIPlus_Shutdown()
; =====================================
$Button2 = GUICtrlCreateButton("", 100, 50, 80, 100)
_GUICtrlButton_SetImageList(-1, $hImageList1, 1)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $Button1
            MsgBox(0, 'Сообщение', 'е')
        Case $Button2
            MsgBox(0, 'Сообщение', 'е')
        Case $GUI_EVENT_CLOSE, $Button
            ExitLoop
    EndSwitch
WEnd

Func _Image($hImageList, $Path)
    $h_Image = _GDIPlus_BitmapCreateFromFile($Path)
    $h_Bitmap =_GDIPlus_BitmapCreateHBITMAPFromBitmap($h_Image)
    _GUIImageList_Add($hImageList, $h_Bitmap)
    _GDIPlus_ImageDispose($h_Image)
    _WinAPI_DeleteObject($h_Bitmap)
EndFunc


Так как я не сразу догадался, об ошибке, то делал второй вариант, тоже не плохой, по принципу Filmstrip. Картинки вставляются в один рисунок, а при использовании указываются координаты нужного участка рисунка.
Вот готовый пример (9кб) с картинками в комплекте.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:44, 26-02-2012 | #11