Нестандартные контролы
-
crashwork
- adviser
- Сообщения: 205
- Зарегистрирован: 17 фев 2009, 19:57
- Награды: 2
- Версия LabVIEW: 8.5, 9.0
- Откуда: Украина. Кременчуг
- Контактная информация:
Re: Нестандартные контролы
mzu2006, а реально идея у тебя хорошая. Надо было вообще убрать getimage из case. Просто делаем скрин раз в начале работы вне цикла (просто надо состояния контрола сделать похожей формы), а потом просто сверяем пиксел на который произошло нажатие со скрином. Точно, вот это оно. А если состояния контрола сильно отличаются (как сейчас там элипс а там многоугольник) то надо сделать два снимка, а потом выбирать с каким сверять.
Последний раз редактировалось crashwork 20 мар 2009, 02:23, всего редактировалось 1 раз.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Нестандартные контролы
crashwork,
А-а-а вот зачем у тебя время измеряется. Нет, я оптимизировал встроенным профайлером. У меня получилось, что основное время отъедалось процедурой (un-)flatten pixmap, вызываемой (в первом варианте кода) из GetImageSubset.vi, вот я её и вынес наружу - стало работать в ~1.5 раза быстрее.
угу, точно, убирать надо из casе'а вообще
А-а-а вот зачем у тебя время измеряется. Нет, я оптимизировал встроенным профайлером. У меня получилось, что основное время отъедалось процедурой (un-)flatten pixmap, вызываемой (в первом варианте кода) из GetImageSubset.vi, вот я её и вынес наружу - стало работать в ~1.5 раза быстрее.
угу, точно, убирать надо из casе'а вообще
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
crashwork
- adviser
- Сообщения: 205
- Зарегистрирован: 17 фев 2009, 19:57
- Награды: 2
- Версия LabVIEW: 8.5, 9.0
- Откуда: Украина. Кременчуг
- Контактная информация:
Re: Нестандартные контролы
mzu2006, прочти выше я там подправил, это реально смахивает на конечный вариант.
-
crashwork
- adviser
- Сообщения: 205
- Зарегистрирован: 17 фев 2009, 19:57
- Награды: 2
- Версия LabVIEW: 8.5, 9.0
- Откуда: Украина. Кременчуг
- Контактная информация:
Re: Нестандартные контролы
Ха, а если делать subvi, то придется или не зашивать туда GetImage, или делать в subvi GetImage каждый раз.
-
crashwork
- adviser
- Сообщения: 205
- Зарегистрирован: 17 фев 2009, 19:57
- Награды: 2
- Версия LabVIEW: 8.5, 9.0
- Откуда: Украина. Кременчуг
- Контактная информация:
Re: Нестандартные контролы
Хотя не, туплю, для этого существует first call. Щас будем пробывать.crashwork писал(а):Ха, а если делать subvi, то придется или не зашивать туда GetImage, или делать в subvi GetImage каждый раз.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Нестандартные контролы
Следующая итерация с учётом всего предыдущего
пока без SubVI
пока без SubVI
- Вложения
-
- StrangeButton2.vi
- (19.77 КБ) 223 скачивания
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
crashwork
- adviser
- Сообщения: 205
- Зарегистрирован: 17 фев 2009, 19:57
- Награды: 2
- Версия LabVIEW: 8.5, 9.0
- Откуда: Украина. Кременчуг
- Контактная информация:
Re: Нестандартные контролы
Вылаживаю готовый XControl для кнопки типа bollean. Таким же образом можно сделать XControl для числовых кнопок и кнопок с тремя состояниями (системные кнопки).
1. Тест хконтрола:
- открываем проект->Test.vi;
- рядом с кнопкой зеленая точка - combo box - это выбор цвета фона для снимка (см. посты выше);
- клацаем на все подряд, потом зырим на блок-диаграмму все как и хотелось - ничего лишнего, такое впечатление, что это обычная кнопка со своими свойствами.
2. Изучение принципа работы:
- разворачиваем My Boolean XControl и просматриваем файлы в таком порядке (попутно читая мои комментарии):
-- My boolean data;
-- My boolean state;
-- папка Properties;
-- My boolean facade (для того чтобы прочитать комментарий отключаем File->VI Properties->Window Size->Scale all object... и проматываем окно проекта вверх - там комментарий. Почему так сделано понятно из комментария);
-- My boolean init (не трогал все оставил как есть (не очень то и надо)).
- не забываем смотреть блок-диаграммы (где они есть). Основной код в My boolean facade.
Совет: для сравнения создайте пустой шаблон хконтрола (тогда можно будет наочно увидеть, что добавлено мной, а что исходный код LabVIEW).
3. Изменение внешнего вида хконтрола (тут ничего не поделаешь, делается только так):
- открываем My boolean facade и редактируем кнопку через customize (как обычно). Потом надо сжать окно максимально по размерам кнопки.
P.S.
- хконтрол я заточил, в принципе, как стандартную кнопку (обрабатываются события Key Down и другие см. My boolean facade). При необходимости возможности можно расширить;
- оптимизация в соответствие с исходной задумкой (см. посты выше);
- методы не писал. Пишутся еще легче чем свойства;
- если чето вызывает недоумение в целесообразности, то пытался писать по стандарту как в примере Labview;
- комментарии... (не ругайте пианиста...));
- время изменения значения хконтрола можно посмотреть в Test.vi (оно больше чем в исходном варианте и странно скачет. Поганял проект LabVIEW там тоже самое(что поделать хконтрол сложная штука)). В принципе время срабатывания кнопки незначительно и не должно сильно влиять на проект в целом.
P.P.S.
Я не последняя инстанция и надеюсь на развитие этой темы. А я приступаю наконец к написанию своей магистерской работы.
1. Тест хконтрола:
- открываем проект->Test.vi;
- рядом с кнопкой зеленая точка - combo box - это выбор цвета фона для снимка (см. посты выше);
- клацаем на все подряд, потом зырим на блок-диаграмму все как и хотелось - ничего лишнего, такое впечатление, что это обычная кнопка со своими свойствами.
2. Изучение принципа работы:
- разворачиваем My Boolean XControl и просматриваем файлы в таком порядке (попутно читая мои комментарии):
-- My boolean data;
-- My boolean state;
-- папка Properties;
-- My boolean facade (для того чтобы прочитать комментарий отключаем File->VI Properties->Window Size->Scale all object... и проматываем окно проекта вверх - там комментарий. Почему так сделано понятно из комментария);
-- My boolean init (не трогал все оставил как есть (не очень то и надо)).
- не забываем смотреть блок-диаграммы (где они есть). Основной код в My boolean facade.
Совет: для сравнения создайте пустой шаблон хконтрола (тогда можно будет наочно увидеть, что добавлено мной, а что исходный код LabVIEW).
3. Изменение внешнего вида хконтрола (тут ничего не поделаешь, делается только так):
- открываем My boolean facade и редактируем кнопку через customize (как обычно). Потом надо сжать окно максимально по размерам кнопки.
P.S.
- хконтрол я заточил, в принципе, как стандартную кнопку (обрабатываются события Key Down и другие см. My boolean facade). При необходимости возможности можно расширить;
- оптимизация в соответствие с исходной задумкой (см. посты выше);
- методы не писал. Пишутся еще легче чем свойства;
- если чето вызывает недоумение в целесообразности, то пытался писать по стандарту как в примере Labview;
- комментарии... (не ругайте пианиста...));
- время изменения значения хконтрола можно посмотреть в Test.vi (оно больше чем в исходном варианте и странно скачет. Поганял проект LabVIEW там тоже самое(что поделать хконтрол сложная штука)). В принципе время срабатывания кнопки незначительно и не должно сильно влиять на проект в целом.
P.P.S.
Я не последняя инстанция и надеюсь на развитие этой темы. А я приступаю наконец к написанию своей магистерской работы.
- Вложения
-
- My Boolean.rar
- (148.57 КБ) 281 скачивание
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Нестандартные контролы
круто. Обязательно посмотрю
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Нестандартные контролы
Неплохо, посмотрел, работает вреде. Я вообще то не люблю X Control-ы, но в данном случае наверное правильное решение.
Re: Нестандартные контролы
Имеется база с интересно офjрмленными элементами управления(расширение .ctl). Подскажите как заменить в своем элементы управления на новые шаблоны ctl. без потери скажем исходного Label, Caption.
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: Нестандартные контролы
Право кнопкой на контроле -> Replace -> Select a Control...Kvanto писал(а):Подскажите как заменить в своем элементы управления на новые шаблоны ctl. без потери скажем исходного Label, Caption.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 2 Ответы
- 327 Просмотры
-
Последнее сообщение Artem.spb