Прозрачность Picture

Простейшие вопросы в области инженерной разработки
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Прозрачность Picture

Сообщение Юрий »

Как в Picture задать прозрачность определённого участка? Попробовал использовать Hilite Color.vi, но он не обеспечивает прозрачность в полном диапазоне.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение dadreamer »

Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение Юрий »

Спасибо за ссылку. При беглом взгляде что то я не смог увидеть там, что мне пригодится. Скорее всего это из за того, что я очень плохо представляю структуру Image data, в частности для чего нужна маска и как она используется и т.д. С этим мне надо ещё разобраться. А так хотелось без лишних временных и умственных затрат иметь возможность задавать прозрачность некоего рисунка, наложенного на подложку-рисунок. В моём случае достаточно прямоугольной области, которая с разной степенью засвечивает заданную область основного рисунка-подложку. Посмотрел, что для 3D picture эта возможность есть и параметром, определяющим эту возможность, является некая альфа, входящая в состав задания цвета в формате RGB четвёртым параметром. А вообще очень странно (имеется ввиду идеология LV), что нет такой функции. А, может, она и есть в какой ни будь библиотеке. На всякий случай прикрепил шаблончик, в котором пробовал поэкспериментировать с прозрачностью.
Вложения
Прозрачность.vi
(193.97 КБ) 127 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение dadreamer »

В приведённом мной примере продемонстрирована абсолютная прозрачность - если байт в маске равен 0, то пиксель прозрачный, иначе нет. Насколько я знаю, стандартные контролы и инструменты :labview: не поддерживают частичную прозрачность, которая вам нужна сейчас. Даже IMAQ не поддерживает, к сожалению. Но, как известно, в :labview: "поддерживаются" разного рода "извращения", так что можно попробовать реализовать то, что нужно:
Performing Alpha Transparency Color Manipulations in LabVIEW : http://www.ni.com/example/26682/en/
Вот ещё пример:
Create Partial Transparent Image Overlay Without VDM : https://forums.ni.com/t5/Example-Progra ... -p/3517061
Суть в том, что необходимо перебрать каждый пиксель на картинке и рассчитать его новый цвет с учётом альфа-канала. И тот, и другой пример, вероятно, придётся ещё допиливать.
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение Юрий »

Dadreamer, спасибо. Преобразование прозрачности из первого примера причесал и, вот, в приложении пример. В него же включил преобразование из второго примера - можно сравнить. Пример тяжеловесный, в нём можно подвигать окно, поменять его цвет и т. д. Правда он полностью не отлажен, может зависнуть при выходе окна за пределы пиктуры, но это не по существу. Прикладываю ещё один оригинальный, я даже сказал бы, смелый вариант - Transparent. Взят он от сюда http://www.labview.ru/forum/viewtopic.php?t=9446#p11128
Да, забыл спросить. В моём примере, когда отрисовывается всё поле, перерисовка идёт с миганием и незначительной задержкой. Можно ли это исправить?
Вложения
Прозрачность.zip
(236.52 КБ) 116 скачиваний
Transparent.zip
(72.84 КБ) 116 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение dadreamer »

Неплохо получилось. Только немного нестабильно отрабатывает перемещения мыши, когда двигаешь маленькую картинку. Чтобы не мигало, надо поставить галочку Advanced -> Smooth Updates. До кучи можете все SubVI сделать реентерантными и отключить дебаг - будет чуть быстрее на слабых машинах. Вероятно, можно ещё как-то оптимизировать, например цикл For распараллелить. Надо играться.
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение Юрий »

Не обратил сразу внимание, а, ведь, прозрачность работает то не правильно - цвет прозрачности не отрабатывается. Не учтено, что массив Imadge состоит из байтов, а цвет складывается из трёх последовательных байтовых элементов массива. Диву даёшься тому как же работало. Проблему исправил - результат во вложении. Правильный вариант за номером 3.
<Только немного нестабильно отрабатывает перемещения мыши, когда двигаешь маленькую картинку.>
Отработка перемещения мыши происходит нормально, а дёргается, думаю, за счёт медленного перерисовывания картинки или обработки данных - надо смотреть.
Вложения
Прозрачность+.zip
(255.95 КБ) 122 скачивания
Последний раз редактировалось Юрий 25 янв 2018, 16:55, всего редактировалось 1 раз.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение dadreamer »

> Отработка перемещения мыши происходит нормально, а дёргается, думаю, за счёт медленного перерисовывания картинки или обработки данных - надо смотреть.
Вот, кстати, на домашнем компе работает нормально, без задержек и прочего. А на работе был такой эффект - резко дёргаешь мышью в любую сторону (при зажатой ЛКМ) и эта перемещаемая область "отказывается" туда перемещаться, а потом и вовсе не таскается мышью или как-то черезчур плохо таскается.
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение Юрий »

Что то мне неймётся. Переделал калькулятор прозрачности Transparency+vi. Быстродействие увеличилось в 8 раз. На самом примере не очень, но всё же чувствуется улучшение. Может, и у Вас ситуация улучшится?
Вложения
Transparency+.vi
(30.07 КБ) 119 скачиваний
Последний раз редактировалось Юрий 25 янв 2018, 16:53, всего редактировалось 1 раз.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение dadreamer »

Особо ничего почему-то не поменялось. Проблема с резким перемещением мыши осталась. Также в углах наблюдаются артефакты - чёрная полоса снизу и артефакты в левом верхнем и нижнем углах.
Вложения
2018-01-25_10-14-30.jpg
2018-01-25_10-14-30.jpg (367.27 КБ) 5378 просмотров
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение Юрий »

<Также в углах наблюдаются артефакты - чёрная полоса снизу и артефакты в левом верхнем и нижнем углах.>
Это следствие не полностью отлаженного примера. Надо допилить контроль выхода окна за пределы картинки. Будет настроение и время сделаю. А, вот, как улучшить ситуацию с рваным перемещением окна это существенно, а мыслей пока нет. Собственно я уже могу успокоиться, поскольку в моей основной задаче окно статично. Просто при исследовании какой либо новой проблемы стараюсь рассмотреть все варианты (на будущее).
Последний раз редактировалось Юрий 25 янв 2018, 16:04, всего редактировалось 1 раз.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение dadreamer »

Предлагаю отслеживать событие "Нажата" И "В окне" только при вхождении курсора в область. Как только курсор туда зашёл И кнопка была нажата, запомнить это и дальше уже отслеживать только Mouse Up (что уже сделано). Я попробовал, всё работает чётко, без косяков.

В маленьком кейсе, в True кадре провод идёт напрямую с селектора. В Value Change регистр проброшен напрямую. В Mouse Down/Up регистр не подключён (дефолт). Единственный косяк, который здесь возникает - когда юзер с нажатой кнопкой мыши переместил курсор за большую картинку и там отжал кнопку. Тогда при возвращении курсора обратно на большую картинку снова рисуется маска и прочее, т.е. кнопка "как бы" всё ещё нажата. Ну, я думаю, это можно обойти через одна-два условия в Mouse Up.
Вложения
2018-01-25_16-55-18.jpg
2018-01-25_16-55-18.jpg (298.53 КБ) 5365 просмотров
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение Юрий »

Может, чего то я не до понял, но у меня никакого положительного эффекта.
<В Value Change регистр проброшен напрямую.> О каком Value Change идёт речь? Может, легче выложить свой вариант.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение dadreamer »

Вложения
transp2.rar
lv2015
(136.3 КБ) 117 скачиваний
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Прозрачность Picture

Сообщение Юрий »

Да, понял я правильно, именно так и сделал, но улучшения нет. В общем остаюсь при том же мнении, что дёрганья - из за задержек при перерисовке, и тут уж ничего не сделать.
Ответить

Вернуться в «Для чайников»