Что нового

GDIPlusPic UDF

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Версия AutoIt
3.3.14.5
Версия
1.1
Категория: GDI+, Элементы GUI

Описание:
Библиотека предназначена для создания элемента изображения с использованием GDI+.
Преимущества:
* Возможность загружать больше типов изображений (поддерживаемые: BMP, JPG, GIF (без анимации), PNG, TIFF, EMF).
* Возможность быстрее обрабатывать большие изображения.
* Возможность использовать ссылку (на изображение с интернета) для указания изображения.

Логика использования проста и максимально приближена к использованию GUICtrlCreatePic/GUICtrlSetImage.

Код/Пример:
Код:
#include <GUIConstantsEx.au3>
#include <GDIPlusPic.au3>

$hGUI = GUICreate('GDIPlusPic Example', 300, 600)

$iPic1 = _GDIPlusPic_Create($hGUI, 'Social.png', 10, 10, 280, 280, False, '_Event')

GUISetState(@SW_SHOW, $hGUI)

$iPic2 = _GDIPlusPic_Create($hGUI, 'Idea.png', 10, 290, 280, 280, True, '_Event')
_GDIPlusPic_Show($iPic1)

Sleep(1500)

Dim $aInfo[4][2] = [[$GPP_INFO_FILE, 'http://pngimg.com/uploads/eye/eye_PNG35660.png'], [$GPP_INFO_LEFT, 50], [$GPP_INFO_WIDTH, 200], [$GPP_INFO_HEIGHT, 200]]
_GDIPlusPic_SetInfo($iPic1, $aInfo)


GUISetCursor(0, 1, _GDIPlusPic_GetInfo($iPic1)[$GPP_INFO_PIC])
GUISetCursor(0, 1, _GDIPlusPic_GetInfo($iPic2)[$GPP_INFO_PIC])

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            _GDIPlusPic_Delete($iPic2)
            Sleep(1500)
         
            Exit
    EndSwitch
WEnd

Func _Event($iPic, $iEvent)
    Local $aInfo = _GDIPlusPic_GetInfo($iPic)
 
    Switch $iEvent
        Case $GPP_EVENT_LBUTTONDOWN
            ConsoleWrite('Left mouse button DOWN for: ' & $aInfo[$GPP_INFO_FILE] & @CRLF)
            GUISetCursor(7, 1, $hGUI)
         
            While BitAND(_WinAPI_GetAsyncKeyState($VK_LBUTTON), 0x8000)
                Sleep(10)
            WEnd
         
            GUISetCursor(2, 1, $hGUI)
        Case $GPP_EVENT_LBUTTONUP
            ConsoleWrite('Left mouse button UP for: ' & $aInfo[$GPP_INFO_FILE] & @CRLF)
            ShellExecute($aInfo[$GPP_INFO_FILE])
        Case $GPP_EVENT_ENTERHOVER
            ConsoleWrite('Enter hovering for: ' & $aInfo[$GPP_INFO_FILE] & @CRLF)
        Case $GPP_EVENT_EXITHOVER
            ConsoleWrite('Exit hovering for: ' & $aInfo[$GPP_INFO_FILE] & @CRLF)
    EndSwitch
EndFunc

Снимок:
Screenshot.png

История версий:
1.1
+ Добавлена поддержка URL (ссылки) для параметра $sFile в _GDIPlusPic_Create и _GDIPlusPic_SetInfo.
* $GPP_EVENT_HOVER переименована в $GPP_EVENT_ENTERHOVER.
* $GPP_EVENT_ENDHOVER переименована в $GPP_EVENT_EXITHOVER.
* Исправлена неверная обработка callback.
* Изменена логика некоторых функции.
* Изменён пример.

1.0 - Первая публичная версия
 
Автор
G.Sandler (CreatoR)
Источник
Ссылка на источник

Вложения

  • GDIPlusPic.zip
    515.3 КБ · Просмотры: 15
Последнее редактирование:
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Обновление...

1.1
+ Добавлена поддержка URL (ссылки) для параметра $sFile в _GDIPlusPic_Create и _GDIPlusPic_SetInfo.
* $GPP_EVENT_HOVER переименована в $GPP_EVENT_ENTERHOVER.
* $GPP_EVENT_ENDHOVER переименована в $GPP_EVENT_EXITHOVER.
* Исправлена неверная обработка callback.
* Изменена логика некоторых функции.
* Изменён пример.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Попробовал пример - не запускается :(
Код:
"D:\AutoIt\GDIPlusPic\GDIPlusPic.au3" (348) : ==> The requested action with this object has failed.:
$aGPP_Data[$iGPP_ID][$iGPP_Callback_Flag].Remove('LBttnDwnOut')
$aGPP_Data[$iGPP_ID][$iGPP_Callback_Flag]^ ERROR
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
ra4o [?]
Попробовал пример - не запускается
Так я же написал версию аутоит для которой разработана UDF. В более поздних не тестировал, там что то связанное с объектами изменили.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Исправил, версия осталась прежней.
В 3.3.14.0 делали поправку:
Fixed: Assigning objects by reference to COM properties like "$obj(some, params) = $obj2".
Это ломает то что они сделали в 3.3.10.0:
Changed: Run-time errors on objects no longer fatal (execution of the script is not halted).

Нужно будет создать тикет...
Создан.
 

Cornet

Знающий
Сообщения
41
Репутация
6
Не работает у меня ссылка на скачивание (
 
Верх