Что нового

ProgressBar с использованием GradientFill

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
AutoIt: 3.3.6.0, 3.3.8.0
Версия: v1.0

Категория: Элементы GUI

Описание: Пример создания красивого ProgressBar'a.

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

Global $iColor1[5] = [0x4C4C4C, 0x202020, 0x404040, 0xA5FF7F, 0x007F0E]
Global $iColor2[5] = [0x4C4C4C, 0x202020, 0x404040, 0x7FC9FF, 0x0084E2]

$hForm = GUICreate("", 370, 200)
GUISetBkColor(0x1E1E1E)
$ProH =  _JSkin_CreateProgressBar(20, 20, 300, 10, $iColor1)
$ProW =  _JSkin_CreateProgressBar(330, 20, 10, 160, $iColor2)
GUISetState()

_JSkin_SetProgressStep($ProH, 58)
_JSkin_SetProgressStep($ProW, 76)

While 1
	WinSetTitle($hForm, "", "H: " & _JSkin_GetProgressStep($ProH) & "%" & "    " & "W: " & _JSkin_GetProgressStep($ProW) & "%")
	If GUIGetMsg() = -3 Then ExitLoop
Wend

Файл: _JSkin_ProgressBar

Снимок:


История версий:
v1.0

Источник: Русское сообщество AutoIt
Автор(ы): Viktor1703
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Re: ProgressBar на основе GDIPlus с градиентом

Странно :blink: А куда потерялась часть сообщения?
Viktor1703
В общем допиши потерянное начало сообщения, И смени название темы на чуть чуть получше. :smile:
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Re: ProgressBar на основе GDIPlus с градиентом

Это когда редактировал, задел всю верхнюю часть и стёр, поправил :smile:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Re: ProgressBar с градиентом

Viktor1703
А теперь посмотри как названы соседние темы - и еще разок подумай :smile: ;)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Viktor1703
Неплохо получилось.

OffTopic:
Medic84
Я тебя не узнал :laugh:
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
Пример ProgressBar не работает. Конфигурация следующая:
AutoIt v 3.3.8.0
WinAPIEx v 3.3
Windows 7 Ultimate

При запуске штатного примера выкидывает ошибку в файле WinAPIex.au3: line 4938: duplicate function name. При попытке поиска по всем включенным хедерам в example.au3, _jskin_progress.au3, winapiex.au3 дубликатов не находится.
 

asdf8

Скриптер
Сообщения
564
Репутация
152
На этом примере :
Код:
#include <GUIConstantsEx.au3>
#Include <JSkin_Progress.au3>

Global $iColor1[5] = [0x4C4C4C, 0x202020, 0x404040, 0xA5FF7F, 0x007F0E]
Global $iColor2[5] = [0x4C4C4C, 0x202020, 0x404040, 0x7FC9FF, 0x0084E2]

$hForm = GUICreate("", 370, 200)
GUISetBkColor(0x1E1E1E)
$ProH =  _JSkin_CreateProgressBar(20, 20, 300, 10, $iColor1)
$ProW =  _JSkin_CreateProgressBar(330, 20, 10, 160, $iColor2)
GUISetState()

_JSkin_SetProgressStep($ProH, 100)
_JSkin_SetProgressStep($ProW, 0)
WinSetTitle($hForm, "", "H: " & _JSkin_GetProgressStep($ProH) & "%" & "    " & "W: " & _JSkin_GetProgressStep($ProW) & "%")
Sleep(1000)
WinSetTitle($hForm, "", "Progress")

$i = 0
$iStep = 1
While 1
	_JSkin_SetProgressStep($ProH, $i)
	_JSkin_SetProgressStep($ProW, $i)
	If $i > 99 Then
		ConsoleWrite('-> $i = ' & $i & @CRLF)
		Sleep(250)
		$iStep = -1
	ElseIf $i < 1 Then
		Sleep(250)
		$iStep = 1
	EndIf
	$i += $iStep
	Sleep(50)
	If GUIGetMsg() = -3 Then ExitLoop
Wend

видно, что горизонтальный прогрессбар не доходит до 100%
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Лично у меня и у тех кто пользовался программой, при большом, очень большом кол-ве вызовов ф-ции _JSkin_SetProgressStep пропадает или не отвечает... не знаю как выразиться, интерфейс GUI.
 

ArtInt

Знающий
Сообщения
135
Репутация
18
asdf8 [?]
ну будет $i = 101, это не исправит того, что, при $i = 100 прогрессбар заполнен не полностью
Мб там нецелое число проскакивает, вроде "99.1" и до 100 не доходит в результате.


Spyhunter [?]
пропадает или не отвечает... не знаю как выразиться, интерфейс GUI.
Эмм... Опиши, плз, поподробнее. Желательно со скринами и с кодом.
Думаю, и ОПу будет полезно ознакомиться с багами. :smile:
 

asdf8

Скриптер
Сообщения
564
Репутация
152
ArtInt [?]
Мб там нецелое число проскакивает, вроде "99.1" и до 100 не доходит в результате.
В примере, который я приводил, есть вывод в консоль, и, да - там ровно 100.
Это какая-то проблема отрисовки.
 

ArtInt

Знающий
Сообщения
135
Репутация
18
Viktor1703
Кстати, зачем

Код:
WinSetTitle($hForm, "", "H: " & _JSkin_GetProgressStep($ProH) & "%" & "    " & "W: " & _JSkin_GetProgressStep($ProW) & "%")
Помещать в цикл? И без этого всё выводит нормально.


Добавлено:
Сообщение автоматически объединено:

asdf8
Трабл действительно есть, однако при значении 101 встаёт в 100% позицию. :ok:

Проверял на таком скрипте:

Код:
include <GUIConstantsEx.au3>
#Include <JSkin_Progress.au3>

Global $iColor1[5] = [0x4C4C4C, 0x202020, 0x404040, 0xA5FF7F, 0x007F0E]
Global $iColor2[5] = [0x4C4C4C, 0x202020, 0x404040, 0x7FC9FF, 0x0084E2]

$hForm = GUICreate("", 370, 200)
GUISetBkColor(0x1E1E1E)
$ProH =  _JSkin_CreateProgressBar(20, 20, 300, 10, $iColor1)
$ProW =  _JSkin_CreateProgressBar(330, 20, 10, 160, $iColor2)
GUISetState()

_JSkin_SetProgressStep($ProH, 100)
_JSkin_SetProgressStep($ProW, 0)

WinSetTitle($hForm, "", "H: " & _JSkin_GetProgressStep($ProH) & "%" & "    " & "W: " & _JSkin_GetProgressStep($ProW) & "%")


While 1
	For $i = 0 to 101
	  _JSkin_SetProgressStep($ProH, $i)
	  _JSkin_SetProgressStep($ProW, 100-$i)
	  If GUIGetMsg() = -3 Then Exit
	  Sleep (10)
   Next
   For $i = 0 to 101
	  _JSkin_SetProgressStep($ProH, 100-$i)
	  _JSkin_SetProgressStep($ProW, $i)
	  If GUIGetMsg() = -3 Then Exit
	  Sleep (10)
Next
Wend


Всё было бы хорошо, если бы вне цикла тоже требовалось бы ставить 101. Но просто _JSkin_SetProgressStep($, 100) даёт 100% заполнение :scratch:

Ждём комментариев автора и дебага.


Добавлено:
Сообщение автоматически объединено:

Spyhunter [?]
Лично у меня и у тех кто пользовался программой, при большом, очень большом кол-ве вызовов ф-ции _JSkin_SetProgressStep пропадает или не отвечает... не знаю как выразиться, интерфейс GUI.
У меня ничего не пропадает в следующем коде:
К скрипту выше по посту добавляю
Код:
GUICtrlCreateButton ("TEST GUI CONTROL",100,100,200,20)
GUICtrlCreateLabel ("TEST GUI CONTROL",100,130,200,20)

Или создание других GUICtrl'ов.
Возможно, если вы выразитесь конкретнее, мы поймём, в чём проблема.


Добавлено:
Сообщение автоматически объединено:

Viktor1703, выложи хотяб список функций UDF'ки и параметры их, а то даже мне лень в код лезть, не то что многим остальным ;-)


Добавлено:
Сообщение автоматически объединено:

Из пожеланий:

  • Создание функции на подобии ProgressOn()
    Понятно, что можно самому два окна создать, но так было бы гораздо удобнее :beer:
  • Вышеописанный экскурс в функции :whistle:
  • Возможность вводить некоторые цвета текстом (хотяб самые элементарные: red, blue, green...)
 
Верх