Автор Тема: ProgressBar с использованием GradientFill  (Прочитано 6303 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
AutoIt: 3.3.6.0, 3.3.8.0
Версия: v1.0

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

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

Код/Пример:
(нажмите для показа/скрытия)

Файл: _JSkin_ProgressBar

Снимок:
Нажмите для отображения изображения в оригинальном размере.

История версий:
(нажмите для показа/скрытия)

Источник: Русское сообщество AutoIt
Автор(ы): Viktor1703
« Последнее редактирование: Январь 27, 2012, 01:17:55 от Viktor1703 »

Русское сообщество AutoIt

ProgressBar с использованием GradientFill
« Отправлен: Декабрь 30, 2011, 06:56:59 »

Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ProgressBar на основе GDIPlus с градиентом
« Ответ #1, Отправлен: Январь 27, 2012, 01:10:11 »
Странно  :blink: А куда потерялась часть сообщения?
Viktor1703
В общем допиши потерянное начало сообщения, И смени название темы на чуть чуть получше.  :)

   
На форуме принято отмечать полезные сообщения пальцем вверх =)
Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535

  • Автор темы
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ProgressBar на основе GDIPlus с градиентом
« Ответ #2, Отправлен: Январь 27, 2012, 01:11:02 »
Это когда редактировал, задел всю верхнюю часть и стёр, поправил :)

Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ProgressBar с градиентом
« Ответ #3, Отправлен: Январь 27, 2012, 01:12:40 »
Viktor1703
А теперь посмотри как названы соседние темы - и еще разок подумай  :) ;)

Русское сообщество AutoIt

Re: ProgressBar с градиентом
« Ответ #3 Отправлен: Январь 27, 2012, 01:12:40 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7831
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: ProgressBar с использованием GradientFill
« Ответ #4, Отправлен: Январь 27, 2012, 06:25:45 »
Viktor1703
Неплохо получилось.

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


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн veretragna [?]

  • Пишем код пафосно.
  • Новичок
  • *
  • Сообщений: 140
  • Репутация: 10
  • Пол: Мужской
  • Как писал, так и работает.
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: ProgressBar с использованием GradientFill
« Ответ #5, Отправлен: Июль 07, 2012, 12:52:27 »
Пример 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 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560
  • Репутация: 151
    • Награды
Re: ProgressBar с использованием GradientFill
« Ответ #6, Отправлен: Июль 09, 2012, 03:08:36 »
На этом примере :
(нажмите для показа/скрытия)

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

Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 655
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: ProgressBar с использованием GradientFill
« Ответ #7, Отправлен: Июль 09, 2012, 03:19:29 »
Цитировать
На этом примере видно, что горизонтальный прогрессбар не доходит до 100%
А ты исправь:
Код: AutoIt [Выделить]
If $i > 99 Then

на:
Код: AutoIt [Выделить]
If $i > 100 Then


Русское сообщество AutoIt

Re: ProgressBar с использованием GradientFill
« Ответ #7 Отправлен: Июль 09, 2012, 03:19:29 »

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560
  • Репутация: 151
    • Награды
Re: ProgressBar с использованием GradientFill
« Ответ #8, Отправлен: Июль 09, 2012, 11:19:16 »
Zaramot  [?]
Цитировать
А ты исправь:

ну будет $i = 101, это не исправит того, что, при $i = 100 прогрессбар заполнен не полностью.

Оффлайн Spyhunter [?]

  • Новичок
  • *
  • Сообщений: 56
  • Репутация: 13
  • Пол: Мужской
    • Награды
Re: ProgressBar с использованием GradientFill
« Ответ #9, Отправлен: Октябрь 01, 2012, 20:48:40 »
Лично у меня и у тех кто пользовался программой, при большом, очень большом кол-ве вызовов ф-ции _JSkin_SetProgressStep пропадает или не отвечает... не знаю как выразиться, интерфейс GUI.

Оффлайн ArtInt [?]

  • Новичок
  • *
  • Сообщений: 135
  • Репутация: 18
  • Пол: Мужской
    • Награды
Re: ProgressBar с использованием GradientFill
« Ответ #10, Отправлен: Октябрь 01, 2012, 23:30:09 »
asdf8  [?]
Цитировать
ну будет $i = 101, это не исправит того, что, при $i = 100 прогрессбар заполнен не полностью
Мб там нецелое число проскакивает, вроде "99.1" и до 100 не доходит в результате.


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



Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560
  • Репутация: 151
    • Награды
Re: ProgressBar с использованием GradientFill
« Ответ #11, Отправлен: Октябрь 02, 2012, 01:28:56 »
ArtInt  [?]
Цитировать
Мб там нецелое число проскакивает, вроде "99.1" и до 100 не доходит в результате.
В примере, который я приводил, есть вывод в консоль, и, да - там ровно 100.
Это какая-то проблема отрисовки.

Оффлайн ArtInt [?]

  • Новичок
  • *
  • Сообщений: 135
  • Репутация: 18
  • Пол: Мужской
    • Награды
Re: ProgressBar с использованием GradientFill
« Ответ #12, Отправлен: Октябрь 02, 2012, 03:31:31 »
Viktor1703
Кстати, зачем

Цитировать
Код: AutoIt [Выделить]
WinSetTitle($hForm, "", "H: " & _JSkin_GetProgressStep($ProH) & "%" & "    " & "W: " & _JSkin_GetProgressStep($ProW) & "%")


Помещать в цикл? И без этого всё выводит нормально.


Добавлено: Октябрь 02, 2012, 03:36:33
asdf8
Трабл действительно есть, однако при значении 101 встаёт в 100% позицию.  :ok:

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

Код: AutoIt [Выделить]
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% заполнение  :think:

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


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

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


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


Добавлено: Октябрь 02, 2012, 03:52:09
Из пожеланий:

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

Русское сообщество AutoIt

Re: ProgressBar с использованием GradientFill
« Ответ #12 Отправлен: Октябрь 02, 2012, 03:31:31 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
5049 Просмотров
Последний ответ Октябрь 02, 2009, 17:52:44
от CreatoR
8 Ответов
5340 Просмотров
Последний ответ Февраль 03, 2011, 03:17:29
от avmir
2 Ответов
3467 Просмотров
Последний ответ Декабрь 16, 2011, 12:47:23
от madmasles
29 Ответов
15923 Просмотров
Последний ответ Январь 10, 2015, 06:03:07
от joiner
7 Ответов
3571 Просмотров
Последний ответ Февраль 13, 2012, 19:38:22
от madmasles
1 Ответов
2302 Просмотров
Последний ответ Сентябрь 25, 2012, 16:04:14
от madmasles
11 Ответов
4953 Просмотров
Последний ответ Апрель 11, 2013, 15:07:03
от dimid
0 Ответов
969 Просмотров
Последний ответ Июнь 10, 2014, 08:06:32
от Михаил
7 Ответов
1130 Просмотров
Последний ответ Март 25, 2017, 22:55:33
от Alofa
4 Ответов
1158 Просмотров
Последний ответ Апрель 13, 2018, 09:47:14
от Василиса Лукьянчикова