veretragna
Как писал, так и работает.
- Сообщения
- 140
- Репутация
- 10
Здравствуйте, товарищи.
Имеется следующий вопрос. Можно ли ускорить создание элементов GUICtrlCreatePic?
В приведенном ниже примере при создании таблички 25х25 картинок тратится около 2 секунд на моем компе, что не есть хорошо. Каждая картинка занимает ровно 4,05 кб, они очень маленькие и должны подгружаться быстро, но скорость построения таблицы оставляет желать лучшего, а хотелось бы отображать если и не мгновенно, то побыстрее.
Думал сначала подгружать все картинки в память и объединять в одно полотно с помощью функций GDIPlus, а потом одним махом вывести на экран, но такой вариант не подходит - к каждому элементу должна прикрепляться подсказка.
Подмогните советом, как оптимизировать построение картинки.
Имеется следующий вопрос. Можно ли ускорить создание элементов GUICtrlCreatePic?
В приведенном ниже примере при создании таблички 25х25 картинок тратится около 2 секунд на моем компе, что не есть хорошо. Каждая картинка занимает ровно 4,05 кб, они очень маленькие и должны подгружаться быстро, но скорость построения таблицы оставляет желать лучшего, а хотелось бы отображать если и не мгновенно, то побыстрее.
Думал сначала подгружать все картинки в память и объединять в одно полотно с помощью функций GDIPlus, а потом одним махом вывести на экран, но такой вариант не подходит - к каждому элементу должна прикрепляться подсказка.
Подмогните советом, как оптимизировать построение картинки.
Код:
Local $vsize = 25, $hsize = 25
Dim $a_Map_Ctrl[($hsize * $vsize) + 1]
$a_Map_Ctrl[0] = $hsize*$vsize
Global $Form2 = GUICreate("Отображение таблицы", ($hsize * 32) + 32, ($vsize * 32) + 52, 100, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "_ShowClose", $Form2)
Global $SavePic = GUICtrlCreateButton("Сохранить в графическом формате", 16, 28 + ($vsize * 32), ($hsize * 32), 22)
;GUICtrlSetOnEvent($SavePic, "_ScreenCap")
GUISetState(@SW_SHOW)
For $i = 1 To $vsize
For $j = 1 To $hsize
$x = StringSplit($a_Map[$i][$j], "|") ; массив $a_Map имеет размерность [$vsize+1][$hsize+1], в каждой ячейке массива хранится: первая часть до "|" - подсказка, вторая - название картинки без расширения
$c += 1
$a_Map_Ctrl[$c] = GUICtrlCreatePic(@ScriptDir & "\_graphic\" & $x[$x[0]] & ".bmp", 8 - 16 + ($j * 32), 8 - 32 + ($i * 32), 32, 32)
If $x[1] Then GUICtrlSetTip($a_Map_Ctrl[$c], $x[1], "Свойства ячейки", 0, 1)
Next
Next